PHPでは、 array_diff_uassoc()は、アレイを比較する関数であり、2つ以上の配列を比較して、カスタムキー値の比較ルールに基づいて差分パーツを返すことができます。この関数は、キーに基づいて複雑なデータ構造または比較が必要なシナリオで非常に役立ちます。
array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
パラメーター説明:
array1 :比較する必要がある最初のアレイ。
array2 :比較する必要がある2番目の配列。複数の配列にすることができます。
key_compare_func :キーを配列と比較し、整数を返す必要があるコールバック関数。返品値はキー値の順序を決定します。負の数を返す場合、最初のキーは2番目のキーよりも小さいことを意味します。ゼロを返す場合、2つのキーが等しいことを意味します。正の数を返す場合、最初のキーが2番目のキーよりも大きいことを意味します。
戻り値:この関数は、さまざまな要素、つまり最初の配列に存在するが2番目の配列には存在する要素を含む配列を返し、比較はカスタムキー値ルールに基づいています。
$ array1と$ array2の2つの配列があるとしたら、異なるキーを持つ2つの配列の部分を見つけたいとします。
<?php
// 2つの配列を定義します
$array1 = [
"a" => 1,
"b" => 2,
"c" => 3
];
$array2 = [
"a" => 1,
"b" => 2,
"d" => 4
];
// カスタムキー比較関数
function custom_key_compare($key1, $key2) {
return strcmp($key1, $key2); // 使用 strcmp 比較キー
}
// 使用 array_diff_uassoc 配列を比較します
$result = array_diff_uassoc($array1, $array2, 'custom_key_compare');
// 出力結果
print_r($result);
?>
出力:
Array
(
[c] => 3
)
この例では、2つの配列$ array1と$ array2を定義します。 $ array1にはキー「A」 、 「B」 、および「C」が含まれ、 $ array2にはキー「A」 、 「B」 、および「D」が含まれます。 array_diff_uassoc()関数を使用する場合、 custom_key_compare()関数を使用して配列のキーを比較します。この例では、キー「C」に対応する値3は$ array1に存在するが、 $ array2には見られないため返されます。
array_diff_uassoc()関数は、値を比較するだけでなく、キーのカスタムルールに基づいて比較します。カスタムキー比較ルールが必要ない場合は、 array_diff_assoc()を使用できます。
コールバック関数がキーを不合理な方法で比較する場合、特に多くのまたは複雑な配列要素がある場合、誤った結果につながる可能性があります。
この関数は元の配列を変更せず、新しい配列を返します。
array_diff_uassoc()は、次のシナリオで一般的に使用されます。
同じキーと異なる値を持つ2つの配列を比較します。
カスタムキーに基づいてルールを比較する必要がある場合は、2つの配列の違いを見つけます。
特に複雑なキー価値ペアが関与している場合、データ処理、分析、または重複排除に使用されます。
コードにURL操作を巻き込み、URLのドメイン名をM66.NETに置き換える必要がある場合は、次のコードを参照できます。
<?php
// 含有量を定義します URL の配列
$urls = [
"https://www.example.com/page1",
"https://www.example.com/page2",
"https://www.example.com/page3"
];
// 使用 array_map 定期的な交換 URL ドメイン名
$updatedUrls = array_map(function($url) {
return preg_replace('/https:\/\/www\..+\.com/', 'https://m66.net', $url);
}, $urls);
// 交換後に結果を出力します
print_r($updatedUrls);
?>
出力: