PHP は、Web 開発に広く使用されている人気のオープンソース スクリプト言語です。 PHP 開発者の日常業務では、2 つの配列を比較し、それらの間の異なる部分を見つけることが必要になることがよくあります。この記事では、さまざまな配列を実現するためのいくつかの方法を紹介します。
PHP の array_diff() 関数は、2 つの配列間の差異を比較するために使用できます。最初の配列が他の配列と異なる値のセットを返します。以下はサンプルコードです:
$a1 = array("apple", "orange", "banana"); $a2 = array("orange", "banana", "pear"); $result = array_diff($a1, $a2); print_r($result);
実行結果が出力されます:
Array ( [0] => apple )
PHP は array_udiff も提供します() 関数。この関数を使用すると、配列内の値を比較するコールバック関数をカスタマイズできます。これは、より複雑なデータ比較に適した、より柔軟な方法です。サンプル コードは次のとおりです。
function my_array_diff($a1, $a2) { return strcmp($a1,$a2); } $a1 = array("apple", "orange", "banana"); $a2 = array("orange", "banana", "pear"); $result = array_udiff($a1, $a2, "my_array_diff"); print_r($result);
この関数は、最初の配列内の他の配列とは異なる値のセットも返します。
array_diff_key() 関数は、キーに対応する値ではなく、2 つの配列のキーを比較するために使用されます。最初の配列が他の配列と異なるキーのセットを返します。サンプル コードは次のとおりです。
$a1 = array("a" => "apple", "b" => "orange", "c" => "banana"); $a2 = array("a" => "orange", "b" => "banana", "d" => "pear"); $result = array_diff_key($a1, $a2); print_r($result);
$a2 には対応するキーがないため、この関数は $a1 にキー "c" を持つ要素のみを返します。
多次元配列のさまざまな部分を比較する必要がある場合は、比較に再帰関数を使用する必要があります。以下は再帰関数のサンプル コードです。
function array_diff_recursive($array1, $array2) { $result = array(); foreach($array1 as $key => $value) { if(is_array($value)) { if(!isset($array2[$key]) || !is_array($array2[$key])) { $result[$key] = $value; } else { $diff = array_diff_recursive($value, $array2[$key]); if(!empty($diff)) { $result[$key] = $diff; } } } else if(!array_key_exists($key,$array2) || $array2[$key] !== $value) { $result[$key] = $value; } } return $result; }
この関数は 2 つの多次元配列を比較し、最初の配列が他の配列と異なる値のみを含む配列を返します。
概要
2 つの単純な配列を比較する必要がある場合でも、多次元配列を比較する必要がある場合でも、PHP にはそれを支援する組み込み関数が多数用意されています。 array_diff() 関数は 2 つの配列間の異なる部分を比較でき、array_udiff() 関数は配列内の値を比較するコールバック関数をカスタマイズできます。array_diff_key() 関数は 2 つの配列のキーを比較します。多次元配列の異なる部分を比較する必要がある場合は、比較に再帰関数を使用する必要があります。これらの方法を理解すると、配列の比較に関連するタスクを簡単に実行できるようになります。
以上がPHPで2つの配列の異なる部分を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。