php数组差集如何取呢?这里说的php数组差集是指在第一个数组中但其他输入数组中没有的值。
php为php数组差集提供了很好用的三个方法:
array_diff(array array1,array array2[,arrayN…])
array_diff_assoc(array array1,array array2[,arrayN…])
array_diff_key(array array1,array array2[,arrayN…])
以上三个方法都是得到php数组差集的方法,功能分别介绍如下:
array_diff(array array1,array array2[,arrayN…])
函数array_diff()返回出现在第一个数组中但其他输入数组中没有的值。这个功能与array_intersect()相反。
实例如下:
Php代码
$fruit1 = array("Apple","Banana","Orange");
$fruit2 = array("Pear","Apple","Grape");
$fruit3 = array("Watermelon","Orange","Apple");
$intersection = array_diff($fruit1, $fruit2, $fruit3);
print_r($intersection);
// output
// Array ( [1] => Banana )
?>
array_diff_assoc(array array1,array array2[,arrayN…])
函数array_diff_assoc()与array_diff()基本相同,只是它在比较时还考虑了数组的键。因此,只在第一个数组中出现而不再其他输入数组中出现的键/值对才会返回到结果数组中。其形式如下:
下面的例子只返回了[yellow] => Banana,因为这个特殊的键/值对出现在$fruit1中,而在$fruit2和$fruit3中都不存在。
Php代码
$fruit1 = array("red"=>"Apple","yellow"=>"Banana","orange"=>"Orange");
$fruit2 = array("yellow"=>"Pear","red"=>"Apple","purple"=>"Grape");
$fruit3 = array("green"=>"Watermelon","orange"=>"Orange","red"=>"Apple");
$intersection = array_diff_assoc($fruit1, $fruit2, $fruit3);
print_r($intersection);
// output
// Array ( [yellow] => Banana )
?>
使用数组的过程中经常要遍历数组。通常需要遍历数组并获得各个键或值(或者同时获得键和值),所以毫不奇怪,PHP为此提供了一些函数来满足需求。许多函数能完成两项任务,不仅能获取当前指针位置的键或值,还能将指针移向下一个适当的位置。
array_diff_key(array array1,array array2[,arrayN…])
函数array_diff_key()比较的是数组的键值,可用一个或任意多个数组与第一个数组进行比较,仅仅键名用于比较。
实例如下:
$a1=array(0=>"Cat",1=>"Dog",2=>"Horse");
$a2=array(2=>"Bird",3=>"Rat",4=>"Fish");
$a3=array(5=>"Horse",6=>"Dog",7=>"Bird");
print_r(array_diff_key($a1,$a2,$a3));
?>