PHP 開発では、2 つの連想配列を比較し、それらの異なる部分を取得する必要があることがよくあります。以下では、この機能を実現するいくつかの方法を紹介します。
方法 1: array_diff_assoc() 関数を使用する
array_diff_assoc() 関数を使用すると、2 つの連想配列のキーと値のペアを比較し、値を返すことができます。最初の配列内のすべての要素 (他の配列は含まない) であり、キー名とキー値は保持されます。
コード例:
$array1 = array("name"=>"张三", "age"=>22, "salary"=>3000); $array2 = array("name"=>"李四", "age"=>22, "salary"=>4000); $result = array_diff_assoc($array1, $array2); print_r($result);
出力結果は次のとおりです:
Array ( [name] => 张三 [salary] => 3000 )
ご覧のとおり、結果配列には配列内の「name」と「salary」という名前のキーのみが含まれています。 1 の値ペアは配列 2 に現れないためです。
方法 2: カスタム関数を使用する
もう 1 つの実装方法は、2 つの配列をループしてキーと値のペアを比較するカスタム関数です。結果の配列。
コード例:
function array_diff_custom($array1, $array2) { $result = array(); foreach ($array1 as $key => $value) { if (!array_key_exists($key, $array2) || ($array2[$key] != $value)) { $result[$key] = $value; } } return $result; } $array1 = array("name"=>"张三", "age"=>22, "salary"=>3000); $array2 = array("name"=>"李四", "age"=>22, "salary"=>4000); $result = array_diff_custom($array1, $array2); print_r($result);
出力結果は次のとおりです:
Array ( [name] => 张三 [salary] => 3000 )
同様に、結果の配列には、キー名「name」と「salary」を持つキーと値のペアのみが含まれます。 " 配列 1 にあります。
方法 3: array_udiff_assoc() 関数を使用する
array_udiff_assoc() 関数は array_diff_assoc() 関数に似ていますが、ユーザー定義のコールバックを使用できます。キーと値のペアを比較する関数。
コード例:
function compareByKeyValue($a, $b) { if ($a === $b) { return 0; } return ($a > $b) ? 1 : -1; } $array1 = array("name"=>"张三", "age"=>22, "salary"=>3000); $array2 = array("name"=>"李四", "age"=>22, "salary"=>4000); $result = array_udiff_assoc($array1, $array2, "compareByKeyValue"); print_r($result);
出力結果は次のとおりです:
Array ( [name] => 张三 [salary] => 3000 )
キーと値のペアが同じかどうかを比較するコールバック関数compareByKeyValue()を定義します。この関数の名前を array_udiff_assoc() 関数の 3 番目の引数として渡すことで、array_diff_assoc() 関数と同様の効果を実現できます。
概要
この記事では、PHP で 2 つの連想配列の異なる部分を取得する 3 つの方法、つまり array_diff_assoc() 関数、カスタム関数、および array_udiff_assoc () 関数を使用する方法を紹介します。どの方法を選択するかは、特定のニーズと個人の習慣によって異なります。いずれの方法でも、連想配列を使用する際の効率と精度を向上させることができます。
以上がPHPで2つの連想配列の異なる部分を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。