2012-12-07 305 views
0

我有兩個陣列$教師和$ schoolgroups搜索值...基於另一個陣列的陣列

$ schoolgroups =陣列( [0] =陣列 ( [GROUPID] = 1 [組名] =紅色 [成員] =陣列 ( [0] =陣列 ( [ID] = 13 [名稱] = Sooraj )

   [1] = Array 
        (
         [id] = 12 
         [name] = sanjay 
        ) 

      ) 

    ) 

[1] => Array 
    (
     [groupid] = 2 
     [groupname] = Blue 
     [members] = Array 
      (
       [0] = Array 
        (
         [id] = 9 
         [name] = Anith 
        ) 

       [1] = Array 
        (
         [id] = 4 
         [name] = John 
        ) 

      ); 

$教師=陣列(

[0] => Array 
    (
     [employee_id] = 7 
     [emp_name] = Anantha Raman 
    ) 

[1] => Array 
    (
     [employee_id] => 9 
     [emp_name] = Anith 
    ) 

[2] = Array 
    (
     [employee_id] = 11 
     [emp_name] = Aravind 
    ) }); 

我想要查詢$教師 'empname',是在schoolgroup陣列($ schoolgroup [ '成員'] [ '' 名稱] =亞拉文)和回聲唯一的非會員 我想顯示的名稱基於$教師數組,如果它不存在於$ schoolgroups

我使用的代碼是不細

foreach ($schoolteachers as $teachers) { 
    $classin = false; 
    foreach (new RecursiveIteratorIterator(new RecursiveArrayIterator($schoolgroups)) as $value) { 
     if ($value == $teachers['emp_name']) { 

      $classin = true; 
      break; 
     } 
    } 
    if (!$classin) { 
     echo $teachers['emp_name']; 
    } 
} 
+0

這將是很好有你的陣列的結構....和樣品期望輸出 – Baba

+0

您好我添加數組到我的問題 –

+0

你的預期結果是什麼?你測試了下面的代碼嗎? – Baba

回答

1

您可以嘗試

$names = array_map(function($v){ return $v['emp_name']; }, $schoolteachers); 
$members = array(); 
array_walk_recursive($schoolgroups, function($item,$key) use (&$members) { 
    $key === "name" and $members[] = $item ; 
}); 

echo "<pre>"; 
foreach($names as $name) 
{ 
    if(!in_array($name, $members)) 
     echo $name,PHP_EOL; 

} 

輸出

Anantha Raman 
Aravind 

See Full Demo