array_diff() 對比 array1 和其他一個或者多個數組,返回在 array1 中但是不在其他 array 里的值。
對應的鍵名保留。
注意 是值。和鍵名無關。相當於把所有值拿出來 去和其他數組比。
第一個參數為要對比的數組。
但該函數只能對多維數組的第一維進行差值比較。而且這種對比時只對鍵值的對比,與鍵名無關(只會找兩個(或兩個以上)數組中鍵值有區別的值)。
兩個單元僅在 (string) $elem1 === (string) $elem2 時被認為是相同的
例子:array_diff可以找出倆數組的差值c_pid:

但是,如果array的任一鍵值和更改的值有重疊,則array_diff無法測出此更改值,如下:
正常情況下array1中和array2中的比較中,更新的元素有c_pid和c_order,但結果只得到c_order的差值,為什么呢?
個人理解:array_diff()將array1的值和array2的值做對比,而不考慮鍵名,所以array1的c_pid的值在array2的c_level中找到,故忽略c_pid的差值。

array_diff_assoc()
與array_diff()用法一樣,不同的是,它的比較是帶上鍵名的,也就是說它找到的就是幾個數組中鍵名相同鍵值不同的項,也就是說,上面array_diff的第二種情況它是可以找出c_pid和c_order兩個差值的。
