PHP では、配列内に複数の要素が存在するかどうかを判定することがよく行われますが、この記事ではこの関数の実装方法を紹介します。
方法 1: in_array 関数を使用する
in_array 関数は、要素が配列内にあるかどうかを判断できます。その構文は次のとおりです:
bool in_array (mixed $needle , array $haystack [, bool $strict = FALSE ] )
この関数には 3 つのパラメーターがあることがわかります。最初のパラメーターはターゲット要素を表し、2 番目のパラメーターは検索する配列を表します。 3 番目のパラメータは、厳密モードを有効にするかどうかを表します。デフォルトでは、厳密モードは有効になっていません。
したがって、in_array 関数を使用して、ループを通じて配列内に複数の要素があるかどうかを判断できます。サンプル コードは次のとおりです。
<?php $needleArr = ['element1', 'element2', 'element3']; $haystackArr = ['element1', 'element3', 'element4', 'element5']; foreach ($needleArr as $needle) { if (in_array($needle, $haystackArr)) { echo "$needle is in haystack array "; } else { echo "$needle is NOT in haystack array "; } }
出力結果は次のとおりです。
element1 is in haystack array element2 is NOT in haystack array element3 is in haystack array
上記のコードでは、まずターゲット配列 $needleArr
と対象となる配列を定義します。 search $haystackArr
を実行し、$needleArr
の各要素が $haystackArr
に存在するかどうかを foreach
ループで判定し、最後に判定結果。
in_array 関数は、デフォルトでは厳密モード、つまり比較のために要素を文字列に変換するモードを有効にしていないことに注意してください。厳密モードを有効にする必要がある場合は、以下に示すように 3 番目のパラメーターを true に設定できます。
in_array($needle, $haystackArr, true);
方法 2: array_intersect 関数を使用する
array_intersect 関数は、複数の配列を比較して検索できます。それらの共通要素、具体的な構文は次のとおりです。
array array_intersect (array $array1, array $array2 [, array $...])
この関数は、複数の配列を比較できます。最初のパラメータは最初の配列を表し、2 番目のパラメータは 2 番目の配列を表します。
したがって、array_intersect 関数を使用して複数の配列を渡し、その交差部分を見つけることもできます。交差部分が空でない場合は、指定された要素が配列内に存在することを意味します。サンプル コードは次のとおりです。
<?php $needleArr = ['element1', 'element2', 'element3']; $haystackArr = ['element1', 'element3', 'element4', 'element5']; $intersectArr = array_intersect($needleArr, $haystackArr); if (!empty($intersectArr)) { echo "There are some elements in the haystack array "; } else { echo "No elements in the haystack array "; }
出力結果は次のとおりです。
There are some elements in the haystack array
上記のコードでは、まずターゲット配列 $needleArr
と対象となる配列を定義します。 search $haystackArr
, and then pass them into the array_intersect 関数. 返された交差部分が空でない場合は、指定された要素が配列内に存在することを意味します。
array_intersect 関数は元の配列のキーを保持するため、元の配列のキーが連続しているかどうかに応じて、関数が返す配列が必ずしも連続しているわけではないことに注意してください。キーと値の関係を保持する必要がある場合は、array_intersect_assoc 関数を使用できます。
方法 3: array_diff 関数を使用する
array_diff 関数は、複数の配列を比較し、その違いを見つけることができます。具体的な構文は次のとおりです:
array array_diff (array $array1, array $array2 [, array $... ] )
この関数は複数の配列を比較できます。最初のパラメーターは最初の配列を表し、2 番目のパラメーターは 2 番目の配列を表します。
したがって、array_diff 関数を使用して複数の配列を渡し、その差分を求めることもできます。差分が元の配列と等しい場合、指定された要素が配列内に存在することを意味します。サンプル コードは次のとおりです。
<?php $needleArr = ['element1', 'element2', 'element3']; $haystackArr = ['element1', 'element3', 'element4', 'element5']; $diffArr = array_diff($needleArr, $haystackArr); if ($diffArr !== $needleArr) { echo "There are some elements in the haystack array "; } else { echo "No elements in the haystack array "; }
出力結果は次のとおりです。
There are some elements in the haystack array
上記のコードでは、まずターゲット配列 $needleArr
と対象となる配列を定義します。返された差分セットが元の配列と等しくない場合は、指定された要素が配列内に存在することを意味します。 array_diff 関数は、最初の配列には存在するが、他の配列には存在しない要素の配列を返すことに注意してください。したがって、最初の配列自体にターゲット要素が含まれていない場合、上記のメソッドは効果がありません。
以上が複数の要素が配列内にあるかどうかを判断するphpの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。