ホームページ  >  記事  >  バックエンド開発  >  PHPで2次元配列の共通部分を見つける

PHPで2次元配列の共通部分を見つける

WBOY
WBOYオリジナル
2023-05-07 17:47:081000ブラウズ

PHP プログラミングでは、2 次元配列は頻繁に使用されるデータ構造の 1 つです。 2 次元配列で最も一般的に使用される操作の 1 つは、交差を見つけることです。では、PHP で 2 次元配列の共通部分を見つけるにはどうすればよいでしょうか?具体的な実装を見てみましょう。

1. array_intersect 関数を使用する

PHP には、2 つの配列の交差部分を見つけるために使用できる組み込み関数 array_intersect() が用意されています。この関数は複数の配列をパラメータとして受け入れることができます。2 次元配列の場合は、array_map 関数を使用して連想配列をインデックス配列に変換する必要があります。

サンプル コードは次のとおりです:

$arr1 = array(
    array('id'=>1,'name'=>'Tom'),
    array('id'=>2,'name'=>'Jack'),
    array('id'=>3,'name'=>'Lucy'),
);

$arr2 = array(
    array('id'=>2,'name'=>'Jack'),
    array('id'=>4,'name'=>'Mike'),
    array('id'=>5,'name'=>'Lily'),
);

$intersect = call_user_func_array('array_intersect', array_map(function($ar){return array_values($ar);},array($arr1, $arr2)));

var_dump($intersect);

出力結果は次のとおりです:

array(1) {
  [0]=>
  array(2) {
    ["id"]=>
    int(2)
    ["name"]=>
    string(4) "Jack"
  }
}

2. 組み込み関数に加えてカスタム関数を使用します。 、カスタム関数関数を使用して、2 次元配列の交差部分を見つける関数を実装することもできます。以下は簡単な実装です:

/**
 * 求二维数组交集
 * @param $arr1
 * @param $arr2
 * @return array
 */
function arr_intersect($arr1, $arr2){
    $intersect = array();
    foreach($arr1 as $value1){
        foreach($arr2 as $value2){
            if($value1 == $value2){
                $intersect[] = $value1;
                break;
            }
        }
    }
    return $intersect;
}

$arr1 = array(
    array('id'=>1,'name'=>'Tom'),
    array('id'=>2,'name'=>'Jack'),
    array('id'=>3,'name'=>'Lucy'),
);

$arr2 = array(
    array('id'=>2,'name'=>'Jack'),
    array('id'=>4,'name'=>'Mike'),
    array('id'=>5,'name'=>'Lily'),
);

$intersect = arr_intersect($arr1, $arr2);

var_dump($intersect);

出力結果は次のとおりです:

array(1) {
  [0]=>
  array(2) {
    ["id"]=>
    int(2)
    ["name"]=>
    string(4) "Jack"
  }
}

要約

2 次元配列の交差演算は、PHP プログラミングでは非常に一般的です。 PHP の組み込み関数 array_intersect() またはカスタム関数を使用すると、2 次元配列の交差関数を簡単に実装できます。実際のプロジェクトでは、高速かつ信頼性の高い交差アルゴリズムを実装するには、特定のシナリオに応じて最適な方法を選択する必要があります。

以上がPHPで2次元配列の共通部分を見つけるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。