PHP 配列に交差があるかどうか
PHP では、配列に対していくつかの操作を実行する必要があることがあります。一般的な操作の 1 つは、2 つの配列に交差があるかどうかを判断することです。 2 つの配列が交差する場合、それらには少なくとも 1 つの共通要素があります。この操作は実際の開発では非常に一般的で、例えばユーザー登録システムではユーザーが入力したメールアドレスが他のユーザーによって登録されているかどうかを判定する必要があったり、商品の在庫管理システムでは特定の製品が他の注文によって購入されたかどうかを判断します。
PHP では、2 つの配列が交差するかどうかを判断する方法が多数あります。この記事では、そのうちのいくつかを紹介します。
PHP には、2 つ以上の配列の共通部分を比較するために使用できる array_intersect 関数が用意されています。その使用法は次のとおりです。
$array1 = array('a', 'b', 'c', 'd'); $array2 = array('c', 'd', 'e', 'f'); $result = array_intersect($array1, $array2); print_r($result);
出力結果は次のとおりです。
Array ( [2] => c [3] => d )
この関数は配列を返します。配列内の要素は 2 つの入力配列の共通部分です。この例では、入力配列 $array1 と $array2 の共通部分は配列 array('c', 'd') です。
array_intersect 関数に加えて、PHP には array_intersect_key 関数も提供されます。 array_intersect 関数とは異なり、array_intersect_key 関数は値そのものではなく、配列のキー値を比較します。その使用法は次のとおりです。
$array1 = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4); $array2 = array('c' => 3, 'd' => 4, 'e' => 5, 'f' => 6); $result = array_intersect_key($array1, $array2); print_r($result);
出力は次のとおりです。
Array ( [c] => 3 [d] => 4 )
この関数は、要素が 2 つの入力配列のキーの共通部分である配列を返します。この例では、入力配列 $array1 と $array2 のキーの共通部分は、配列 array('c' => 3, 'd' => 4) です。
もう 1 つの方法は、2 つの foreach ループを使用して 2 つの配列の値を比較することです。その使用法は次のとおりです。
$array1 = array('a', 'b', 'c', 'd'); $array2 = array('c', 'd', 'e', 'f'); $result = false; foreach ($array1 as $value1) { foreach ($array2 as $value2) { if ($value1 == $value2) { $result = true; break 2; } } } if ($result) { echo '两个数组有交集'; } else { echo '两个数组没有交集'; }
上記のコードでは、最初に $result の値を false に設定し、2 つの配列に交差がないことを示します。次に、2 つの foreach ループを使用して 2 つの配列をそれぞれ調べ、同じ要素が見つかった場合は、$result の値を true に設定し、break 2 ステートメントを使用して 2 つのループから抜け出します。最後に、$result の値に基づいて結果が出力されます。
上で紹介した関数に加えて、PHP は array_intersect_ukey 関数も提供します。 array_intersect_key 関数と同様に、array_intersect_ukey 関数は配列のキー値を比較しますが、2 つのキーを比較するには追加のコールバック関数を渡す必要があります。その使用法は次のとおりです。
$array1 = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4); $array2 = array('C' => 3, 'D' => 4, 'e' => 5, 'f' => 6); $result = array_intersect_ukey($array1, $array2, 'strcasecmp'); print_r($result);
出力は次のとおりです。
Array ( [c] => 3 [d] => 4 )
この関数は、要素が 2 つの入力配列のキーの共通部分である配列を返します。この例では、入力配列 $array1 と $array2 のキーの共通部分は、配列 array('c' => 3, 'd' => 4) です。大文字と小文字を区別せずにキーを比較するために使用されるコールバック関数 'strcasecmp' を渡したことに注意してください。
概要
この記事では、array_intersect、array_intersect_key、2 つの foreach ループ、array_intersect_ukey 関数など、2 つの配列が交差しているかどうかを判断するための PHP のさまざまな方法を紹介します。実際の開発では、最高のパフォーマンスと効率を達成するために、特定の状況に応じて適切な方法を選択できます。
以上がPHPの配列に共通部分はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。