array_diff_assoc()函數(shù)比較兩個(gè)(或多個(gè))數(shù)組并返回差值。
此函數(shù)比較兩個(gè)(或多個(gè))數(shù)組的鍵和值,并返回一個(gè)包含array1條目但在array2或array3,...等中不存在的條目的數(shù)組。
此函數(shù)不同于array_diff()函數(shù),因?yàn)閍rray_diff()僅使用值與其他數(shù)組進(jìn)行比較,而array_diff_assoc()函數(shù)在與其他數(shù)組進(jìn)行比較時(shí)同時(shí)使用鍵和值。
array array_diff_assoc( array $array1, array $array2 [, array $array3...] );
序號(hào) | 參數(shù)及說(shuō)明 |
---|---|
1 | array1 (必填) 是要與之比較的數(shù)組 |
2 | array2 (必填) 它是一個(gè)要與第一個(gè)數(shù)組進(jìn)行比較的數(shù)組 |
3 | array3(選填) 它是一個(gè)要與第一個(gè)數(shù)組進(jìn)行比較的數(shù)組 |
函數(shù)array_diff_assoc()返回一個(gè)數(shù)組,其中包含array1中的所有值,這些值在任何其他具有相同鍵的數(shù)組中都不存在。
此函數(shù)最早是在PHP版本4.3.0中引入的。
試試下面的實(shí)例。這兩個(gè)數(shù)組中都存在“ a” =>“ orange”和“ c” =>“ banana”,因此在結(jié)果中不會(huì)出現(xiàn)-
<?php $input1 = array( "a"=>"orange", "b"=>"mango", "c"=>"banana"); $input2 = array( "a"=>"orange", "b"=>"apple", "c"=>"banana"); print_r(array_diff_assoc($input1, $input2)); ?>測(cè)試看看?/?
輸出結(jié)果:
Array ( [b] => mango )
在這里,兩個(gè)數(shù)組對(duì)于所有對(duì)都有不同的鍵和相應(yīng)的值,例如"a"=>"orange"在第二個(gè)數(shù)組中不存在,類似地,其他鍵值對(duì)也不存在于第二個(gè)數(shù)組中,因此它們將在結(jié)果中可用-
<?php $input1 = array( "a"=>"orange", "b"=>"mango", "c"=>"banana"); $input2 = array( "a"=>"banana", "b"=>"apple", "c"=>"orange"); print_r(array_diff_assoc($input1, $input2)); ?>測(cè)試看看?/?
輸出結(jié)果:
Array ( [a] => orange [b] => mango [c] => banana )
下面示例說(shuō)明了,僅當(dāng)(string)$elem1 ===(string)$elem2時(shí),鍵=>值(key=>value)對(duì)中的兩個(gè)值才視為相等。
<?php $input1 = array(0, 5, 20); $input2 = array("00", "05", "20"); $result = array_diff_assoc($input1, $input2); print_r($result); ?>測(cè)試看看?/?
輸出結(jié)果:
Array ( [0] => 0 [1] => 5 )