2012-12-07 307 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