首页 > 函数解析 > 妙用PHP函数array_diff

妙用PHP函数array_diff

2010年1月29日

众多周知,在php中有这样一个函数array_diff(),该函数的原始用途——也就是基本定义的用途是用来找两个数组的差集的,返回的结果是一个数组。例如:

有两个数组

1
2
3
4
5
6
$a=array(1,2,3);
$b=array(1,2,4);
 
$c=array_diff($a,$b);
 
var_dump($c);

结果如下:

1
2
3
4
array(1) {
  [2]=>
  int(3)
}

可以看到他返回的数组元素包含了键值在数组a中不在数组b中的值3,
注意:比较差集是分先后顺序的,如果你这样写array($b,$a),其结果是:

1
2
3
4
array(1) {
  [2]=>
  int(4)
}

更加需要注意的是这个函数返回的数组键名并不改变,就像上边显示的那样,3在数组a的第2位,4在数组b的第二位都没有改变,你可不能想当然的从索引0来访问返回的数组c

既然说到是妙用就不能只说基本用途,不然就成了标题党了,呵呵……

我们可以利用这个函数来去掉某个数组中我们不想要的元素。

例如我们在数组a中,想把1,2两个值去掉的话,该怎么办呢?有一个传统方法就是遍历数组,如果值等于1,或者等2我们就移除这个元素,显然比较麻烦,如今就不同了,我们可以这样来写

首先,把我们不需要的数值组成一个数组,

1
$del=array(1,2);

接下来我们就利用我们的主角array_diff函数了

1
2
$d=array_diff($a,$del);
var_dump($d);

php的执行结果就会是我们梦寐以求的这样哦:

1
2
3
4
array(1) {
  [2]=>
  int(3)
}

呵呵……怎么样,只要动脑筋废铁变成金吧!!!

战地音乐 函数解析 ,

延伸阅读:

  1. array_map函数解析
  2. PHP数组定义和销毁
  3. PHP一维数组排序方法
  4. 强制json_decode结果转换为数组
  5. PHP多维数组的排序
  1. 2010年3月4日14:36 | #1

    果然是不错的想法哦~