(一)php獲取兩個數組相同元素
array array_intersect(array $array1, array $array2, [, array $...])
array array_intersect_assoc(array $array1, array $array2, [, array $...])
這兩個方法的功能基本一致,都是返回兩個數組(也可以是多個數組)中都存在的元素,不同的是,前者只考慮數組中元素的 value 一致就認為兩者相同,而后者需要 key 和 value 都一致才認為兩者相同,例如:
<?php
$array1 = array('1', 'a' => 'aaaaaa', 'b' => 'bbbbbb', 'c');
$array2 = array('a' => 'aaaaaa', 'c' => 'bbbbbb', 'c', '1');
var_dump(array_intersect($array1,$array2));
運行上面的代碼會得到如下結果:
array(4) {
[0]=>
string(1) "1"
["a"]=>
string(6) "aaaaaa"
["b"]=>
string(6) "bbbbbb"
[1]=>
string(1) "c"
}
而使用方法 array_intersect_assoc()將會得到如下結果:
array(1) {
["a"]=>
string(6) "aaaaaa"
}
(二)php比較兩個數組中的不同元素
array array_diff(array $array1, array $array2, [, array $...])
array array_diff_assoc(array $array1, array $array2, [, array $...])
類似的,這兩個方法的基本功能也是一致的,返回第一個數組中有,但是其它數組沒有的元素。 前者只比較值,后者同時比較 key 和 value。
<?php
$array1 = array('1', 'a' => 'aaaaaa', 'b' => 'bbbbbb', 'c');
$array2 = array('a' => 'aaaaaa', 'c' => 'bbbbbb', 'c', '1');
var_dump(array_diff($array1,$array2));
上面代碼的運行結果為:
array(0) {
}
而如果把最后一行更換為 var_dump(array_diff_assoc($array1, $array2)); 將得到如下結果:
array(3) {
[0]=>
string(1) "1"
["b"]=>
string(6) "bbbbbb"
[1]=>
string(1) "c"
}
