php實現的陣列交集運算,使用遞迴方式進行陣列的合併運算,在編碼過程中應該注意到array_merge()、+以及array_merge_recursive()在陣列合併時的差異。
array_merge():
把兩個或多個陣列合併為乙個陣列。
如果鍵名有重複,該鍵的鍵值為最後乙個鍵名對應的值(後面的覆蓋前面的)。如果陣列是數字索引的,則鍵名會以連續方式重新索引。
如果僅僅向 array_merge() 函式輸入了乙個陣列,且鍵名是整數,則該函式將返回帶有整數鍵名的新陣列,其鍵名以 0 開始進行重新索引。
兩個陣列相加,只是追加不存在的鍵名和對應的值,鍵名不重新索引。
array_merge_recursive():
將乙個或多個陣列的元素的合併起來,乙個陣列中的值附加在前乙個陣列的後面。並返回作為結果的陣列。
但是,與array_merge()不同的是,當有重複的鍵名時,值不會被覆蓋,而是將多個相同鍵名的值遞迴組成乙個陣列。
1<?php23
/**4* @email modofu@163.com
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陣列交集的優化
假設我們正在運營乙個手機相關的 使用者可以通過指定若干引數 如作業系統,螢幕解析度,攝像頭畫素等等 來篩選自己想要的手機。不過由於手機的 引數多,且不同的手機其引數差異大,所以參數列結構通常是縱表 乙個引數是一行 而不是橫表 乙個引數是一列 此時使用若干引數來取結果,通常就是把 每個單獨引數來取結果...