0


1

多次元配列と比較しようとしていますが、単にarray_diff_assoc()を使用することはできません。 私が比較しようとしている配列は両方とも連想配列で、キーは同じ順序になっているので両方ともソートされています。 ほとんどの場合、配列は構造が同じです。 配列を格納する要素を比較する方法を理解することができないようです、1つの値を保持する要素を比較することができます。

助けてくれてありがとう!

3 回答


3


違いがないかどうかを確認しようとしている場合(具体的に違いが何ではないか)、次のように試すことができます。

serialize($ array1)== seralize($ array2)を返します。

それはあなたに2つの配列が等しいかどうかについての賛否両論を与えるでしょう。


2


http://us2.php.net/array_diff_assoc[array_diff_assoc()]のマニュアルページに http://us2.php.net/array_diff_assoc[ユーザー投稿メモ]があります。を求めて。


1


それらが等しいかどうかを確認したいのか、実際に違いが何であるかを出力したいのかどうかは明確ではありません。

それが前者の場合は、再帰関数を使用して適切な方法でそれを実行できます。

$ array1 = array( 'a' => 1、 'b' => 2、 'c' => array( 'ca' => 1、 'cb' => array( 'foo'))); $ array2 = array( 'a' => 1、 'b' => 2、 'c' => array( 'ca' => 1、 'cb' => array( 'bar')));

var_dump(arrayEqual($ array1、$ array2));

function arrayEqual($ a1、$ a2){if(count(array_diff($ a1、$ a2))))はfalseを返します。

foreach($ a1 as $ k => $ v){if(is_array($ v)

trueを返します。 }

または、このような完全なハックを使用してください。

if(serialize($ array1)== serialize($ array2))