2

連想行のインデックス付き配列である 2 つの多次元配列があります。

$array1 = array(
    array('name' => 'foo', 'id' => 12),
    array('name' => 'bar', 'id' => 34),
    array('name' => 'boo', 'id' => 56),
);

$array2 = array(
    array('name' => 'bar', 'id' => 34),
    array('name' => 'boo', 'id' => 56),
    array('name' => 'bar', 'id' => 78),
);

私のサンプル入力データのように、行が異なる値を持っている可能性がありidますが、同じname値です。bar

id値のみに基づいて配列を比較する必要があります。

期待される出力: (とidがにあるため)3456$array2

array(
    array('name' => 'foo', 'id' => 12)
)

$one_not_two = array_diff($array1['id'], $array2['id']);何も返さないものを試しました。

$one_not_two = array_diff($array1['id'], $array2['id']);
「引数は配列ではありません」というエラーを返したものも試しました。

もともと、ids を 1 次元配列に抽出し、それらを比較することで回避していました。アプリケーションの新機能では、多次元構造を維持しながら行を比較する必要があります。何かアドバイス?

私たちのサーバーは現在php 5.3を実行していますが、それが違いを生む場合.

4

5 に答える 5

0

最後に、Array1を連想配列に変更して解決しましたname => id

于 2013-11-15T17:09:43.523 に答える