首頁 >後端開發 >PHP問題 >php自訂實作數組交集

php自訂實作數組交集

WBOY
WBOY原創
2023-05-23 10:32:36522瀏覽

在PHP開發中,陣列交集是一項常見的操作。然而,PHP提供的數組交集函數只能處理兩個數組的情況。當我們需要處理多個陣列的交集時,就需要自訂實作交集運算。

本文將介紹如何自訂實作PHP陣列交集,並提供實作程式碼。

  1. 問題描述

我們需要處理多個陣列的交集,例如有以下四個陣列:

$arr1 = array(1, 2, 3);
$arr2 = array(2, 3, 4);
$arr3 = array(3, 4, 5);
$arr4 = array(4, 5, 6);

現在我們需要求解這四個數組的交集。

  1. 解決方案

我們可以透過以下步驟來實現陣列交集:

2.1 將所有陣列的元素存入一個新陣列中,再對新數組進行去重操作。

2.2 統計每個元素在原始數組中出現的次數,如果次數等於原始數組的個數,表示該元素在所有原始數組中都出現過,將其加入結果數組中。

以下是具體實作程式碼:

function array_intersect_multi() {
  $arrays = func_get_args();
  $counts = array_count_values(call_user_func_array('array_merge', $arrays));
  $intersected_array = array();
  $arrays_count = count($arrays);
  
  foreach ($counts as $value => $count) {
    if ($count === $arrays_count) {
      $intersected_array[] = $value;
    }
  }

  return $intersected_array;
}
  1. 函數說明

#上述程式碼中函數array_intersect_multi() 可以實作多個數組的交集操作。

此函數有一個入參,即數組集合,數組集合是由多個數組組成的數組。

此函數會將陣列集合中所有陣列的元素加入到新陣列中,並對新陣列進行去重操作。

然後,函數會統計每個元素在原始數組中出現的次數,如果次數等於原始數組的個數,表示該元素在所有原始數組中都出現過,將其加入結果數組中。

最終,函數會傳回陣列交集結果。

  1. 範例

我們可以使用上述函數來解四個陣列的交集,範例如下:

$arr1 = array(1, 2, 3);
$arr2 = array(2, 3, 4);
$arr3 = array(3, 4, 5);
$arr4 = array(4, 5, 6);

$intersected_array = array_intersect_multi($arr1, $arr2, $arr3, $arr4);
print_r($intersected_array);

輸出結果為:

Array
(
    [0] => 4
)

可以看到,四個陣列的交集為4

  1. 總結

透過自訂實作陣列交集操作,我們可以方便地處理多個陣列的交集。本文介紹了實現數組交集的步驟和程式碼,希望對大家有幫助。

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

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