从基于另一个数组的数组中搜索值

时间:2012-12-07 06:39:43

标签: php

我有两个阵列$ schoolteachers和$ schoolgroups ...

  

$ schoolgroups = Array(             [0] =数组           (    [groupid] = 1               [groupname] =红色               [members] =数组                   (                       [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
                    )

            ); 

$ schoolteachers = Array(

[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
    ) });

我想检查$ schoolteachers'empname',是在schoolgroup数组($ schoolgroup ['members'] [''name] = Aravind)并且只回应非成员 我希望显示基于名称的$ schoolteachers数组(如果$ 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'];
    }
}

1 个答案:

答案 0 :(得分: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