众多周知,在php中有这样一个函数array_diff(),该函数的原始用途——也就是基本定义的用途是用来找两个数组的差集的,返回的结果是一个数组。例如:
有两个数组
$a=array(1,2,3);
$b=array(1,2,4);
$c=array_diff($a,$b);
var_dump($c);
结果如下:
array(1) {
[2]=>
int(3)
}
可以看到他返回的数组元素包含了键值在数组a中不在数组b中的值3,
注意:比较差集是分先后顺序的,如果你这样写array($b,$a),其结果是:
array(1) {
[2]=>
int(4)
}
更加需要注意的是这个函数返回的数组键名并不改变,就像上边显示的那样,3在数组a的第2位,4在数组b的第二位都没有改变,你可不能想当然的从索引0来访问返回的数组c
既然说到是妙用就不能只说基本用途,不然就成了标题党了,呵呵……
我们可以利用这个函数来去掉某个数组中我们不想要的元素。
例如我们在数组a中,想把1,2两个值去掉的话,该怎么办呢?有一个传统方法就是遍历数组,如果值等于1,或者等2我们就移除这个元素,显然比较麻烦,如今就不同了,我们可以这样来写
首先,把我们不需要的数值组成一个数组,
$del=array(1,2);
接下来我们就利用我们的主角array_diff函数了
$d=array_diff($a,$del);
var_dump($d);
php的执行结果就会是我们梦寐以求的这样哦:
array(1) {
[2]=>
int(3)
}