0

$schoolteachersと$schoolgroupsの2つの配列があります...

$ schoolgroups = Array([0] = Array([groupid] = 1 [groupname] = Red [members] = Array([0] = Array([id] = 13 [name] = 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 array($ 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'];
    }
}
4

1 に答える 1

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

完全なデモを見る

于 2012-12-07T06:44:37.513 に答える