關於php的array_diff和array_diff_assoc的使用總結


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兩個差值的。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM