ホームページ >バックエンド開発 >PHPチュートリアル >PHP 関数の実践的なヒント: array_intersect()
PHP の array_intersect() は、2 つ以上の配列間で同一の要素を比較し、これらの要素の配列の共通部分を返すために使用できる非常に便利な配列関数です。この記事では、array_intersect() 関数の基本的な使用法と、PHP 開発者がこの関数をより有効に活用するための実践的なヒントを紹介します。
1. 関数の構文と基本的な使用法
array_intersect() 関数の構文は次のとおりです:
array_intersect ( array $array1 , array $array2 [, array $... ] ) : array
この関数はパラメータとして少なくとも 2 つの配列を必要としますが、複数の配列を受け入れます。関数の戻り値は、すべての配列の交差要素を含む新しい配列です。例:
$arr1 = array('apple', 'banana', 'pear'); $arr2 = array('banana', 'orange', 'grape'); $arr3 = array('banana', 'kiwi', 'pear'); $result = array_intersect($arr1, $arr2, $arr3); print_r($result); //输出结果为:array('banana');
この例では、$arr1、$arr2、$arr3 の 3 つの配列を定義し、それぞれに果物の名前が含まれています。 array_intersect($arr1, $arr2, $arr3) 関数を使用して、これらの配列の共通部分を計算し、戻り結果を出力します。これらの配列の唯一の交差要素は「バナナ」であることがわかります。
2. 実践的なスキル
基本的な使用法に加えて、array_intersect() 関数にはいくつかの実践的なスキルもありますので、以下で 1 つずつ紹介します。
重複要素が含まれる可能性のある配列がある場合は、array_unique() 関数を使用してこれらの重複要素を削除できます。ただし、重複した要素のみを保持し、他の要素を削除したい場合は、array_intersect() 関数を使用できます。例:
$arr1 = array('apple', 'banana', 'orange', 'pear', 'banana', 'kiwi'); $arr2 = array_unique($arr1); //去除重复元素 $result = array_intersect($arr1, $arr2); //返回重复元素 print_r($result); //输出结果为:array('banana');
この例では、重複要素を含む配列 $arr1 を定義します。まず、array_unique() 関数を使用してこれらの重複要素を削除し、次に array_intersect() 関数を使用して値を計算します。 $arr1 と $arr2 の交差の場合、結果には配列内に繰り返される要素「バナナ」のみが含まれます。
array_intersect() 関数は複数の配列をパラメータとして受け入れることができるため、複数の配列の共通部分を比較するのに便利です。たとえば、array_intersect($arr1, $arr2, $arr3) を使用して 3 つの配列間の共通部分を計算できますが、比較する配列が複数ある場合はどうなるでしょうか。これは、以下に示すように、for ループを使用して実現できます。
$arr1 = array('apple', 'banana', 'pear'); $arr2 = array('banana', 'orange', 'grape'); $arr3 = array('banana', 'kiwi', 'pear'); $arr4 = array('banana', 'cherry', 'pear'); $cnt = count(func_get_args()); //获取参数个数 for ($i = 1; $i < $cnt; $i++) { ${"arr" . $i} = array_intersect(${"arr" . ($i-1)}, ${"arr" . $i}); //比较数组交集 } print_r($arr1); //输出结果为:array('banana');
この例では、$arr1、$arr2、$arr3、$arr4 の 4 つの配列を定義し、それぞれに果物の名前が含まれています。 for ループを使用して、これらの配列の共通部分を比較し、結果を同じ配列に格納します。最後に、交差要素を含む配列を出力すると、結果には「バナナ」のみが含まれます。この例は、複数の配列を比較する場合の array_intersect() 関数の便利さを示しています。
デフォルトでは、array_intersect() 関数は元の配列のキー名を保持します。ただし、キー名を強制的にリセットしたい場合は、array_values() 関数を使用できます。例:
$arr1 = array('name' => 'Tom', 'age' => 32); $arr2 = array('name' => 'Jerry', 'age' => 25); $arr3 = array_intersect($arr1, $arr2); print_r($arr3); //输出结果为:array('name' => 'Jerry', 'age' => 25); $arr4 = array_values(array_intersect($arr1, $arr2)); print_r($arr4); //输出结果为:array('Jerry', 25);
この例では、いくつかの基本情報を含む 2 つの連想配列 $arr1 と $arr2 を定義します。 array_intersect() 関数を使用して 2 つの配列の共通部分を比較し、元のキー名を保存してから、再度 print_r() 関数を使用して結果を出力します。出力には、元のキー名「name」と「age」が含まれるようになります。次に、array_values() 関数を使用して元のキーを取り除き、交差要素のみを残し、結果を出力します。現時点では、出力結果には交差要素「Jerry」と「25」のみが含まれており、array_values() 関数によって元のキー名が削除されたことがわかります。
array_intersect() 関数は、多次元配列の比較にも適しています。たとえば、array_intersect($arr1, $arr2, $arr3) を使用して複数の 1 次元配列の共通部分を比較することも、array_intersect($arr1[0], $arr2[0], $arr3[0] を使用することもできます) ]) 比較する 多次元配列の共通部分を比較します。例:
$arr1 = array( array('name' => 'Tom', 'age' => 32), array('name' => 'Jerry', 'age' => 25), array('name' => 'Mickey', 'age' => 28) ); $arr2 = array( array('name' => 'Jerry', 'age' => 25), array('name' => 'Mickey', 'age' => 28), array('name' => 'Donald', 'age' => 30) ); $arr3 = array( array('name' => 'Tom', 'age' => 32), array('name' => 'Jerry', 'age' => 25), array('name' => 'Mickey', 'age' => 28) ); $arr4 = array_intersect($arr1[0], $arr2[0], $arr3[0]); print_r($arr4); //输出结果为:array('name' => 'Jerry', 'age' => 25);
この例では、$arr1、$arr2、$arr3、$arr4 の 4 つの多次元配列を定義します。 array_intersect() 関数を使用してこれらの配列の共通部分を比較すると、結果には「Jerry」に関する情報のみが含まれます。この例は、array_intersect() 関数が多次元配列の比較に適しており、構文が非常に単純であることを示しています。
3. 概要
array_intersect() 関数は、PHP 開発において非常に実用的で、複数の配列間の交差部分を簡単に比較し、繰り返しの要素を返すことができます。この記事では、この関数の基本的な使用法と、重複要素の削除、複数の配列の共通部分の比較、元の配列キー名の保持、多次元配列の共通部分の比較などの実践的なスキルを紹介します。これらのヒントは、PHP 開発者が array_intersect() 関数をより有効に活用し、開発効率とコード品質を向上させるのに役立ちます。
以上がPHP 関数の実践的なヒント: array_intersect()の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。