php常用数组--array_diff计算数组的差集

gongzhiyang 7月前 331

今天,和大家一起聊聊常用的数组, diff类的函数。是用于数组之间相互对比而产生的函数。你也可以从手册中了解到。我这里进行了一下整理。在借助手册可以更好的理解消化。那我们现在开始吧!

  • 特别注意

对比 array1 和其他一个或者多个数组,返回在 array1 中但是不在其他 array 里的值。

我整理一下array_diff 函数相关的其他函数:

1. array_diff常用函数,基本定义 计算数组的差集。
特别注意,他只和键值对比。

       $array1 = array(0, 1, 2);
		$array2 = array("00", "01", "2");
	//	print_r($array1);
		$result = array_diff($array1, $array2);//Array ( [0] => 0 [1] => 1 )
		print_r($result);		

2. array_diff_assoc 带索引检查计算数组的差集
特别注意,他和和 array_diff() 不同的是键名也用于比较。

$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_assoc($array1, $array2);
print_r($result);
输出
Array
(
    [b] => brown
    [c] => blue
    [0] => red
)

3.array_diff_key — 使用键名比较计算数组的差集

特别注意,他和和 array_diff() 正好返回,它是用来比较键名。

$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);

var_dump(array_diff_key($array1, $array2));
返回
array(2) {
  ["red"]=>
  int(2)
  ["purple"]=>
  int(4)
}

已上是常用的数组函数。他们默认是支持一维数组。当然还有其他的一些函数:

1.array_diff_uassoc — 用用户提供的回调函数做索引检查来计算数组的差集
2.array_udiff_uassoc — 带索引检查计算数组的差集,用回调函数比较数据和索引
3.array_udiff_assoc — 带索引检查计算数组的差集,用回调函数比较数据
4.array_diff_ukey — 用回调函数对键名比较计算数组的差集
5.array_udiff — 用回调函数比较数据来计算数组的差集

想了解更多,请查看php手册 http://php.net/manual/zh/ref.array.php
摘抄
key 可以是 integer 或者 string。value 可以是任意类型。
此外 key 会有如下的强制转换:
包含有合法整型值的字符串会被转换为整型。例如键名 “8” 实际会被储存为 8。但是 “08” 则不会强制转换,因为其不是一个合法的十进制数值。
浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名 8.7 实际会被储存为 8。
布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。
Null 会被转换为空字符串,即键名 null 实际会被储存为 “”。
数组和对象不能被用为键名。坚持这么做会导致警告:Illegal offset type。


最新回复 (0)
    • 都市菜鸟网
      2
        立即登录 立即注册 
返回
发新帖