首頁  >  文章  >  後端開發  >  php 二維數組求交集

php 二維數組求交集

WBOY
WBOY原創
2023-05-07 17:47:081006瀏覽

在PHP程式設計中,二維數組是經常使用的資料結構之一。二維數組中最常用的操作之一就是求交集。那麼,如何在PHP中求二維數組的交集呢?下面我們來看看具體實作方式。

1.使用 array_intersect 函數

PHP提供了一個內建函式array_intersect(),可以用來求兩個陣列的交集。此函數可以接受多個數組作為參數,對於二維數組,需要使用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.使用自訂函數

除了內建函數,我們也可以使用自訂函數來實現二維數組求交集的功能。以下是一個簡單的實作方式:

/**
 * 求二维数组交集
 * @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"
  }
}

總結

二維陣列的求交集運算在PHP程式設計中是非常常見的。透過使用PHP內建函數array_intersect()或自訂函數,我們可以輕鬆實現二維陣列的求交集功能。在實際專案中,我們應該根據具體場景選擇最優的方式來實現出一個快速可靠的交集演算法。

以上是php 二維數組求交集的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn