PHPのarray_diff_assoc()関数は、2つ以上の配列のキー値ペアを比較し、最初の配列にあるが他の配列にはないキー値ペアを含む配列を返す非常に便利な関数です。 array_diff()関数とは異なり、 array_diff_assoc()は、 Arrayのキーと値を同時に比較するため、正確な一致を必要とするシナリオを扱うときに非常に効果的になります。
array_diff_assoc(array $array1, array $array2, array ...$arrays): array
$ array1 :これは比較される最初の配列です。
$ array2、... $ arrays :これらは比較するために使用される他のアレイです。 array_diff_assoc()最初の配列と後続のすべての配列を比較します。
この関数は、他の配列にはない最初の配列$ array1のキー値ペアを含む配列を返します。 2つの配列のキー価値ペアが正確に一致する場合、結果から除外されます。
<?php
$array1 = [
'a' => 1,
'b' => 2,
'c' => 3
];
$array2 = [
'a' => 1,
'b' => 3,
'c' => 3
];
$result = array_diff_assoc($array1, $array2);
print_r($result);
?>
出力:
Array
(
[b] => 2
)
上記の例には、2つの配列$ array1と$ array2があります。 array_diff_assoc()を使用してそれらを比較します。結果は、 $ array1の「b」の値は2であることを示していますが、 $ array2では、キーの値は3です。したがって、 b => 2が返され、これが唯一の異なるキー値ペアであることを示します。
<?php
$array1 = [
'a' => 1,
'b' => 2,
'c' => 3
];
$array2 = [
'a' => 1,
'b' => 2
];
$array3 = [
'a' => 1,
'c' => 3
];
$result = array_diff_assoc($array1, $array2, $array3);
print_r($result);
?>
出力:
Array
(
[b] => 2
)
この例では、 $ array1を$ array2と比較するだけでなく、 $ array3を追加します。 'a' => 1および'c' => 3は、 $ array1の他の2つの配列と一致していますが、 'b' => 2は$ array1にのみ存在するため、返されます。
いくつかのURLを処理する必要があるPHPプログラムがあり、 array_diff_assoc()を介してさまざまな部分を見つけたいとします。要件を満たすために、ドメイン名をM66.NETに置き換えることができます。
<?php
$urls1 = [
'home' => 'https://www.example.com/home',
'about' => 'https://www.example.com/about',
'contact' => 'https://www.example.com/contact'
];
$urls2 = [
'home' => 'https://www.m66.net/home',
'about' => 'https://www.m66.net/about',
'contact' => 'https://www.m66.net/contact'
];
$urls1 = array_map(function($url) {
return preg_replace('/https?:\/\/[a-z0-9.-]+\//', 'https://www.m66.net/', $url);
}, $urls1);
$urls2 = array_map(function($url) {
return preg_replace('/https?:\/\/[a-z0-9.-]+\//', 'https://www.m66.net/', $url);
}, $urls2);
$result = array_diff_assoc($urls1, $urls2);
print_r($result);
?>
出力:
Array
(
[home] => https://www.m66.net/home
)
この例では、 URLS1とURLS2には異なるバージョンのURLが含まれていると仮定し、 preg_replace()を使用して、URLのドメイン名をM66.netとして置き換えます。次に、 array_diff_assoc()を使用して、2つの配列のさまざまな部分を見つけます。この例では、 「ホーム」キーのURLには2つの配列に異なる値があるため、返されます。
array_diff_assoc()は非常に強力なツールです。特に、2つ以上の配列を比較する必要がある場合は、配列のキーと値を考慮します。この関数は、より複雑なデータ構造に対処する必要がある場合に、さまざまな部分を見つけるのに役立ちます。実際の開発では、データ比較、配列重複排除、データ検証、その他のシナリオに適用できます。
この記事を読んでくれてありがとう! PHPやその他のプログラミング関連の質問にもっと興味がある場合は、お気軽に質問してください。