PHP實現的陣列交集運算

2022-08-31 01:45:10 字數 1578 閱讀 3966

php實現的陣列交集運算,使用遞迴方式進行陣列的合併運算,在編碼過程中應該注意到array_merge()、+以及array_merge_recursive()在陣列合併時的差異。

array_merge():

把兩個或多個陣列合併為乙個陣列。

如果鍵名有重複,該鍵的鍵值為最後乙個鍵名對應的值(後面的覆蓋前面的)。如果陣列是數字索引的,則鍵名會以連續方式重新索引。

如果僅僅向 array_merge() 函式輸入了乙個陣列,且鍵名是整數,則該函式將返回帶有整數鍵名的新陣列,其鍵名以 0 開始進行重新索引。

兩個陣列相加,只是追加不存在的鍵名和對應的值,鍵名不重新索引。

array_merge_recursive():

將乙個或多個陣列的元素的合併起來,乙個陣列中的值附加在前乙個陣列的後面。並返回作為結果的陣列。

但是,與array_merge()不同的是,當有重複的鍵名時,值不會被覆蓋,而是將多個相同鍵名的值遞迴組成乙個陣列。

1

<?php23

/**4* @email [email protected]

5* @author modofu.chen67

* 多陣列取交集運算

8* 使用方法:

9* arrayintersection ($array1,[$array2,$array3...]);

10* 引數可變,且需要都為陣列。

11*

12*/

1314

function

arrayintersection ()

1524}25

unset ($paramnum

);26

$unionarray = array

();27

for ($j = 0; $j

< count ($params) ; $j++)

28$unionarray = array_merge_recursive($unionarray , $params[$j

]);29

unset ($params

);30

$newarray = array

();31 recursion($unionarray , $newarray

);32

unset ($unionarray

);33

$uniquearray = array_unique($newarray

);34

$repeatarray = array_diff_assoc ($newarray , $uniquearray

);35

unset($newarray , $uniquearray

);36

$repeatarray = array_unique($repeatarray

);37

printf ($repeatarray

);3839}

4041

function recursion (&$_unionarray , &$_returnarray)42

49else

5053}54

}5556 ?>

List 交集 並集 差集運算

有時候,為了需求,需要統計兩個 list 之間的交集,並集,差集。查詢了一些資料,現在總結在下面 1.獲取兩個list 的交集 方法一 a 2,3,4,5 b 2,5,8 tmp val for val in a if val in b print tmp 2,5 方法二 print list se...

Oracle的並集,交集,差集運算

1 表運算 結構相同 列名 列型別 不限長度 的一列或多列 a 並集運算 union b 交集運算 intersect 並集和交集運算結果,與先後順序無關 c 差集運算 minus i.a b ii.b a 1 複製表結構 複製表追加主鍵約束 更新一行記錄 create table b as sel...

PHP陣列交集的優化

假設我們正在運營乙個手機相關的 使用者可以通過指定若干引數 如作業系統,螢幕解析度,攝像頭畫素等等 來篩選自己想要的手機。不過由於手機的 引數多,且不同的手機其引數差異大,所以參數列結構通常是縱表 乙個引數是一行 而不是橫表 乙個引數是一列 此時使用若干引數來取結果,通常就是把 每個單獨引數來取結果...