php
判断数组相等 数组运算符介绍
如何判断两个数组相等呢?其实很简单,用
==
或者
=== 就可以了
php 手册里说明如下,
例子
名称 结果
$a + $b
联合
$a
和
$b 的联合。
$a == $b
相等 如果
$a
和
$b
具有相同的键/值对则为
TRUE。
$a === $b
全等 如果
$a
和
$b
具有相同的键/值对并且顺序和类型都相同则为
TRUE。
$a != $b
不等 如果
$a
不等于
$b
则为
TRUE。
$a <> $b
不等 如果
$a
不等于
$b
则为
TRUE。
$a !== $b
不全等 如果
$a
不全等于
$b
则为
TRUE。
那像
array('k'=>array())这样的多维数组能用如上方法判断相等吗?当然也可以。
若数组是数字索引的,就要注意一下了,见代码
[php]
<?php
$a = array("apple", "banana");
$b = array(1 => "banana", "0" => "apple");
var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
?>
<?php
$a = array("apple", "banana");
$b = array(1 => "banana", "0" => "apple");
var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
?>
除了
==这种数组操作符之外,还有其他比较绕的方法来判断。比如说,利用 array_diff($a,
$b)来比较两个数组的差集,如果差集是 NULL 的话就相等了。
然后再说一下
数组的 + 加号运算符。+
和
array_merge 的区别在遇到相等 key 时,用+时,
左边数组会覆盖掉右边数组的值,
array_merge 相反,后面的数组覆盖掉前面的。
[php]
<?php
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");
$c = $a + $b; // Union of $a and $b
echo "Union of \$a and \$b: \n";
var_dump($c);
$c = array_merge($a, $b); // Union of $b and $a
echo "array_merge of \$b and \$a: \n";