詳解php中array_diff_assoc()函數

來源:互聯網
上載者:User

比較兩個數組的鍵名和索引值,並返回差集:

<?php$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");$a2=array("a"=>"red","b"=>"green","c"=>"blue");$result=array_diff_assoc($a1,$a2);print_r($result);?>

定義和用法

array_diff_assoc() 函數用於比較兩個(或更多個)數組的鍵名和索引值 ,並返回差集。

該函數比較兩個(或更多個)數組的鍵名和索引值,並返回一個差集數組,該數組包括了所有在被比較的數組(array1)中,但是不在任何其他參數數組(array2 或 array3 等等)中的鍵名和索引值。

文法

array_diff_assoc(array1,array2,array3...);

參數 描述

array1 必需。與其他數組進行比較的第一個數組。

array2 必需。與第一個數組進行比較的數組。

array3,... 可選。與第一個數組進行比較的其他數組。

返回一個差集數組,該數組包括了所有在被比較的數組(array1)中,但是不在任何其他參數數組(array2 或 array3 等等)中的鍵名和索引值。

比較兩個數組的鍵名和索引值,並返回差集:

<?php$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");$a2=array("e"=>"red","f"=>"green","g"=>"blue");$result=array_diff_assoc($a1,$a2);print_r($result);?>

比較三個數組的鍵名和索引值,並返回差集:

<?php$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");$a2=array("a"=>"red","f"=>"green","g"=>"blue");$a3=array("h"=>"red","b"=>"green","g"=>"blue");$result=array_diff_assoc($a1,$a2,$a3);print_r($result);?>

一:使用array_diff和array_diff_assoc前奏

在商城開發中,經常要用到對資料的增刪改查。其中,資料的更新,很多時候我們只需要對其中的一個欄位,或者部分欄位進行更新,而不需要全部欄位一起更新,那麼這裡就需要找出哪些是需要更新的,哪些是不需要更新的。array_diff和array_diff_assoc均可以檢查數組的差值,我們只需對比從資料庫中擷取的要更新的舊資料數組和提交的新資料數組作比較,array_diff和array_diff_assoc均可返回差數組。

二:學習array_diff 和array_diff_assoc

array_diff()

array array_diff( array $array1 , array $array2 [, array $... ] ),返回一個數組,數組中包括了array1中所有與其 他數組不同值的元素,另外對應的鍵名保留。但該函數只能對多維陣列的第一維進行差值比較。而且這種對比時只對索引值的對比,與鍵 名無關(只會找兩個(或兩個以上)數組中索引值有區別的值)。

例子: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兩個差值的。各位看官如果不信,可以動手試試。小弟新手一枚,萬事開頭難,第一次寫博文,即使有點菜,希望各路大神海涵。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.