PHP涨姿势——那些熟悉又陌生的方法(Array篇2)
写在前面的废话
一、array_diff
计算数组的差集
array1要被对比的数组
array2和这个数组进行比较
…更多相比较的数组
看上去很简单,就是找我有你们没有的。我们来看一下下面的几行代码
$array1 = array(
'first' => 1,
'second' => 4,
'third'=>false,
'sp'=>NULL
);
$array2 = array('first' => '1','second' =>2);
var_dump(array_diff($array1, $array2));
/**
array(3) {
["second"]=>
int(4)
["third"]=>
bool(false)
["sp"]=>
NULL
}
**/
输出结果如我们所料;那下面我们再加一个数组 array(false)
var_dump(array_diff($array1, $array2,array(false)));
/*
array(1) {
["second"]=>
int(4)
}
*/
从输出结果可以判断,在比较中 false
和 NULL
被看作是相等的,对PHP来说这样并不奇怪。
如果判断的数组中是一个多维数组呢?
二、array_diff_assoc
带索引检查计算数组的差集
和 array_diff() 不同的是键名也用于比较
也就是说值不一样 或者 键不一样 那就算 是我们不一样!!
三、array_diff_key
使用键名比较计算数组的差集
本函数和 array_diff() 相同只除了比较是根据键名而不是值来进行的
也就是说只要键不一样就是是我们不一样!!
四、array_diff_uassoc
用用户提供的回调函数做索引检查来计算数组的差集
key_compare_func在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。
int callback ( mixed $a, mixed $b )
这个函数也是 值不一样 或者 键不一样 那就算 是我们不一样!!
但是他有一个特殊技能,就是在判断键值是否相同的时候,有你说了算;当然如果值不一样的话 回调实际是没什么作用的。
五、array_diff_ukey
用回调函数对键名比较计算数组的差集
也就是说只要键不一样就是是我们不一样!!但是他也有一个特殊技能,就是在判断键值是否相同的时候,有你说了算。