「2つの配列が同じものかどうかチェックするPHP関数」 にインスパイアされて作ってみました。多次元配列に対応しています。
同じ値を持つときに True を返す
ソートさせて配列全体を === で比較させます。素直に in_array 関数あたりを使うことも考えましたが個数を考慮することが出来ないので、やはりソートが一番手っ取り早いし分かりやすいという結論に達しました。
function is_same_array(array $a, array $b) {
static $sort;
if (!$sort) {
$sort = function (array &$array) use (&$sort) {
foreach ($array as &$value) {
if (is_array($value)) {
$sort($value);
}
}
sort($array);
};
}
$sort($a);
$sort($b);
return $a === $b;
}
同じキーと値のペアを持つときに True を返す
ソートさせて配列全体を === で比較させます。sort 関数はキーを保存しないので、代わりに asort 関数または ksort 関数を選択します。キーの方が情報量が一般的に少ないと言えるので、ここでは後者を採用することにします。
function is_same_assoc(array $a, array $b) {
static $sort;
if (!$sort) {
$sort = function (array &$array) use (&$sort) {
foreach ($array as &$value) {
if (is_array($value)) {
$sort($value);
}
}
ksort($array);
};
}
$sort($a);
$sort($b);
return $a === $b;
}
同じキーと値のペアを持ち順番も一致しているときに True を返す
配列全体を === で比較させます。関数作る必要ないですねw
function is_same_order_assoc(array $a, array $b) {
return $a === $b;
}