PHPでは、 array_diff()とarray_diff_ukey()はどちらも配列を比較するために使用されますが、作業原則と使用シナリオに明らかな違いがあります。この記事では、これら2つの機能の違いについて詳細に説明し、それらの使用シナリオを分析します。
array_diff()関数は、2つ以上の配列の値を比較するために使用され、最初の配列に存在するが他の配列には存在する要素を返します。この関数は、キー名に関係なく、値に基づいて比較されます。
array_diff(array $array1, array $array2, array ...$arrays): array
$array1 = ["apple" => "green", "banana" => "yellow", "cherry" => "red"];
$array2 = ["banana" => "yellow", "cherry" => "blue", "grape" => "purple"];
$result = array_diff($array1, $array2);
print_r($result);
Array
(
[apple] => green
)
この例では、 array_diff()は、array $ array1に存在するが、 $ array2には存在する要素を返します。 array_diff()は、値のみを比較し、キーを比較しないことに注意してください。
array_diff()とは異なり、 array_diff_ukey()関数は、配列のキー名に基づいて比較されます。最初の配列のキーが他の配列に存在するかどうかを比較し、キー名が一致しない場合の結果からの要素のみを除外します。
array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
$array1 = ["apple" => "green", "banana" => "yellow", "cherry" => "red"];
$array2 = ["banana" => "yellow", "cherry" => "blue", "grape" => "purple"];
$result = array_diff_ukey($array1, $array2, "key_compare");
print_r($result);
function key_compare($key1, $key2) {
return $key1 === $key2 ? 0 : -1;
}
Array
(
[apple] => green
)
この例では、 array_diff_ukey()はキー名で比較されるため、 $ array2に存在しないため、 $ array1の「Apple」キーを返します。
array_diff() :配列の値を比較し、キー名を無視します。値が他の配列に存在するかどうかのみを気にする場合に適用できます。
array_diff_ukey() :配列のキー名を比較し、値を無視します。値が同じかどうかではなく、キー名の存在を気にする場合に機能します。
Array_diff()を使用する:arrayの値を比較する必要がある場合、 array_diff()を使用すると、より適切な選択肢があります。たとえば、配列内で一意の値を見つけたいときは、この関数を使用できます。
Array_diff_ukey()を使用:配列のキー名を比較する必要がある場合、 array_diff_ukey()を使用する方が適切です。値のコンテンツを気にしない特定のキーを除外するのに役立ちます。たとえば、連想配列があり、特定の特定のキーが他の配列に存在するかどうかのみを気にする場合は、この関数を使用できます。
array_diff()とarray_diff_ukey()の主な違いは、異なるオブジェクトを比較することです。前者は配列の値に基づいて比較され、後者は配列のキー名に基づいて比較されます。実際のニーズに応じて、適切な関数を選択すると、アレイをより効率的に処理することができます。