以下のように、キーと値が同じであるが、順序が違う配列があるとします。
$array1 = [1 => 'apple', 2 => 'orange'];
$array2 = [2 => 'orange', 1 => 'apple'];
上記$array1 === $array2
では同じと判定されません。
これをksortなどでソートしていたのでは処理が複雑になります。
1回で判定するには、
$array1 = [1 => 'apple', 2 => 'orange'];
$array1 = [2 => 'orange', 1 => 'apple'];
if (!array_diff_assoc($array1, $array1)) {
echo '2つの配列のキーと値に差分はありません';
}
array_diff_assocは2つの配列のキーと値に差分が無ければ空の配列を返します。
上記のようにキーと値が同じであるが順序が違う配列であれば、同じであることの検証に使えます。
ただし以下のように、
$array1 = [1 => 'apple', 2 => 'orange'];
$array2 = [2 => 'orange', 1 => 'apple', 3 => 'banana'];
var_dump(array_diff_assoc($array1, $array2));
// []
キーと値が同じではない配列を比較する場合は同一であることの確認には使えません。
array_diff_assocは、array1の要素のうち、 その他の配列のいずれにも含まれないものだけを残した配列を返します。
詳細は以下よりご確認頂けます。
https://www.php.net/manual/ja/function.array-diff-assoc.php