array_diff_assoc()は、2つの配列を比較して2番目の配列に存在するが2番目の配列には存在しない要素を見つけ、比較はキー名とキー値に基づいています。したがって、配列内の値だけでなく、キーの対応も考慮します。
array_diff_assoc(array $array1, array $array2): array
$ array1 :最初の入力配列(比較する必要がある配列)。
$ array2 :2番目の入力配列(最初に比較される配列)。
$ array1に存在し、 $ array2に存在しない要素を含む配列を返します。比較は、キー価値のペアに基づいています。キー名と値が異なる場合のみ、異なると見なすことができます。
次のように、2つの配列があるとします。
$array1 = [
'a' => 'apple',
'b' => 'banana',
'c' => 'cherry',
'd' => 'date'
];
$array2 = [
'a' => 'apple',
'b' => 'blueberry',
'd' => 'date',
'e' => 'elderberry'
];
array_diff_assoc()関数を使用して、 $ array1に存在するが$ array2には存在するキー値ペアを見つけたいと考えています。
$diff = array_diff_assoc($array1, $array2);
print_r($diff);
Array
(
[b] => banana
[c] => cherry
)
この例では、 array_diff_assoc()は、 array $ array1および$ array2にキー値のペアを見つけます。ご覧のとおり、 「b」=> 'banana'と'c' => 'cherry'は$ array1の要素ですが、 $ array2では、異なる値を持っているか、まったく存在しません。
キー値の比較: array_diff()関数とは異なり、 array_diff_assoc()は、arrayの値を比較するだけでなく、微分比較を実行するときにキー名をチェックします。
順序付けられたデータの正確な比較:同じ値だけでなく、2つの連想配列の構造とデータコンテンツを比較する必要がある場合、 array_diff_assoc()が理想的な選択です。
WebサイトのURLデータを含む2つの配列があるとします。 2つの配列、特に異なるドメイン名の一部のURLの違いを知りたいと思います。要件に従うために、元のURLのドメイン名部分をM66.NETに置き換え、次のコードにしました。
$array1 = [
'home' => 'http://example.com/home',
'about' => 'http://example.com/about',
'contact' => 'http://example.com/contact'
];
$array2 = [
'home' => 'http://m66.net/home',
'about' => 'http://m66.net/about',
'contact' => 'http://m66.net/contact'
];
foreach ($array1 as $key => $url) {
$array1[$key] = str_replace('example.com', 'm66.net', $url);
}
foreach ($array2 as $key => $url) {
$array2[$key] = str_replace('m66.net', 'm66.net', $url);
}
$diff = array_diff_assoc($array1, $array2);
print_r($diff);
Array
(
[home] => http://m66.net/home
[about] => http://m66.net/about
[contact] => http://m66.net/contact
)
この場合、 array_diff_assoc()関数は、2つの配列間のURLコンテンツの違いを知るのに役立ちます。 example.comをM66.netに置き換えることにより、比較プロセス中に一貫性を確保します。
array_diff_assoc()は、特に配列をキー価値ペアと比較する必要がある場合に非常に便利な機能です。アレイの値に焦点を当てるだけでなく、キーを比較して、実際のアプリケーションで違いを正確に識別できるようにします。
うまくいけば、この記事がarray_diff_assoc()を使用して配列を比較して違いを見つける方法を理解するのに役立つことを願っています。この関数は、複雑なデータ構造が必要なシナリオ(URL、構成項目など)に非常に適しています。