-7

PHPでこの問題を解決するのに助けが必要array_diffです。誰かが私のためにこれを再び愛することができますか?

最初の配列

$array1 = array( [0]=> array( [id]=>1 [name]=>n1)
                [1]=> array( [id]=>2 [name]=>n2) 
                [2]=> array( [id]=>3 [name]=>n3)
              )

2番目の配列

$array2 = array( [0]=> array( [id]=>1 [name]=>n1)
              )

出力は次のようになります

$outarray =array( 
                [0]=> array( [id]=>2 [name]=>n2) 
                [1]=> array( [id]=>3 [name]=>n3)
               )
4

2 に答える 2

1

'id'これを行うには多くの方法がありますが、キーを明示的に比較する機能的な方法を次に示します。

$ids = array_map(function ($i) { return $i['id']; }, $array2);
$outarray = array_filter($array1, function ($i) use ($ids) {
    return !in_array($i['id'], $ids);
});

同じことを行う、より初心者に優しい実装:

$ids = array();
foreach ($array2 as $value) {
    $ids[] = $value['id'];
}

$outarray = array();
foreach ($array1 as $value) {
    if (!in_array($value['id'], $ids)) {
        $outarray[] = $value;
    }
}
于 2012-10-04T06:06:47.720 に答える
0

$変数の前に s がありませんか? 次の方法で使用できます。

$outarray[] = $array1;
$outarray[] = $array2;
于 2012-10-04T06:06:38.967 に答える