PHP では、2 つの配列間で異なる要素を検索する必要がある場合があります。この問題には複数の解決策がある可能性がありますが、ここでは一般的な解決策をいくつか紹介します。
方法 1: array_diff 関数を使用する
PHP には、2 つの配列間の異なる要素を比較するために使用できる組み込み関数 array_diff があります。
この関数の構文は次のとおりです。
array array_diff ( array $array1 , array $array2 [, array $... ] )
このうち、$array1 は最初の配列、$array2 は 2 番目の配列、[,array $...] はオプションです。最初の配列 3、4、... 配列。
この関数は、最初の配列には出現するが後続の配列には存在しないすべての要素を含む配列を返します。
次は、array_diff 関数を使用してさまざまな要素を検索する例です:
$array1 = array("a", "b", "c", "d", "e"); $array2 = array("a", "b", "c", "f", "g"); $result = array_diff($array1, $array2); print_r($result);
上記のコードの出力結果は次のとおりです:
Array ( [3] => d [4] => e )
方法 2: foreach ループを使用するto traverse
もう 1 つの方法は、foreach ループを使用して 2 つの配列を走査し、それらの各要素を比較することです。これには、カウンターを使用して個別の要素の数をマークし、それらを新しい配列に格納する必要があります。
次は、foreach ループを使用してさまざまな要素を検索する例です:
$array1 = array("a", "b", "c", "d", "e"); $array2 = array("a", "b", "c", "f", "g"); $diff = array(); $count = 0; foreach($array1 as $val){ if(!in_array($val, $array2)){ $diff[$count] = $val; $count++; } } foreach($array2 as $val){ if(!in_array($val, $array1){ $diff[$count] = $val; $count++; } } print_r($diff);
上記のコードの出力結果は次のとおりです:
Array ( [0] => d [1] => e [2] => f [3] => g )
方法 3: を使用します。 array_merge 関数と array_unique 関数
この方法では、2 つの配列を 1 つの配列にマージし、array_unique 関数を使用して異なる要素を検索します。
次は、array_merge 関数と array_unique 関数を使用してさまざまな要素を検索する例です:
$array1 = array("a", "b", "c", "d", "e"); $array2 = array("a", "b", "c", "f", "g"); $union = array_merge($array1, $array2); $diff = array_unique($union); print_r($diff);
上記のコードの出力は次のとおりです:
Array ( [3] => d [4] => e [5] => f [6] => g )
まとめ
上記は、さまざまな要素を見つける 3 つの方法です。その中でも、array_diff 関数は最もシンプルで使いやすいメソッドで、2 つの配列を渡すだけで異なる要素を取得できます。 foreach ループ トラバーサルを使用するには、より多くのコードを記述する必要がありますが、コードの実行速度は array_diff 関数よりも高速になります。最後に、array_merge 関数と array_unique 関数を使用するコードは単純ですが、データを格納するためにメモリ内に新しい配列を作成する必要があるため、パフォーマンス上の問題が発生する可能性があります。したがって、使用する場合は選択を考慮する必要があります。
以上がPHPはさまざまな配列要素を見つけますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。