background image

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";