在PHP開發中,陣列交集是一項常見的操作。然而,PHP提供的數組交集函數只能處理兩個數組的情況。當我們需要處理多個陣列的交集時,就需要自訂實作交集運算。
本文將介紹如何自訂實作PHP陣列交集,並提供實作程式碼。
我們需要處理多個陣列的交集,例如有以下四個陣列:
$arr1 = array(1, 2, 3); $arr2 = array(2, 3, 4); $arr3 = array(3, 4, 5); $arr4 = array(4, 5, 6);
現在我們需要求解這四個數組的交集。
我們可以透過以下步驟來實現陣列交集:
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; }
#上述程式碼中函數array_intersect_multi()
可以實作多個數組的交集操作。
此函數有一個入參,即數組集合,數組集合是由多個數組組成的數組。
此函數會將陣列集合中所有陣列的元素加入到新陣列中,並對新陣列進行去重操作。
然後,函數會統計每個元素在原始數組中出現的次數,如果次數等於原始數組的個數,表示該元素在所有原始數組中都出現過,將其加入結果數組中。
最終,函數會傳回陣列交集結果。
我們可以使用上述函數來解四個陣列的交集,範例如下:
$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
。
透過自訂實作陣列交集操作,我們可以方便地處理多個陣列的交集。本文介紹了實現數組交集的步驟和程式碼,希望對大家有幫助。
以上是php自訂實作數組交集的詳細內容。更多資訊請關注PHP中文網其他相關文章!