等价运算符如何在PHP中使用数组?

时间:2009-03-24 12:34:31

标签: php

代码:

$arr = array( 10, 20, 30 );
$arr1 = array(
       1=>30,
       2=>20,
       0=>10
);
var_dump( $arr == $arr1 );

$a = array( 1, 2, 3);
$b = array(
       1=>2,
       2=>3,
       0=>1
 );
var_dump($a == $b);

输出:

bool(false)
bool(true)

6 个答案:

答案 0 :(得分:6)

如果两个数组的对应值相同,则认为它们是相同的。

在第一个示例中,您要比较两个数组:

[10, 20, 30]
[10, 30, 20]

显然这些不一样,所以它返回false。第二个例子:

[1, 2, 3]
[1, 2, 3]

......是一样的。我在这里错过了什么吗?


如果要测试两个阵列是否具有相同的成员,请参阅此问题: Algorithm to tell if two arrays have identical members

如果您只是想看到他们有相同的总数,可以使用array_sum

答案 1 :(得分:2)

如果您没有为array指定密钥,php会自动选择从0开始的数字。 因此,以下两对线的含义相同:

$arr = array(10,20,30);
$arr = array(0=>10,1=>20,2=>30);

$a = array(1,2,3);
$a = array(0=>1,1=>2,2=>3);

答案 2 :(得分:0)

可以预料,

array(10,20,30) != array(10,30,20)

array(1,2,3) == array(1,2,3)

答案 3 :(得分:0)

这是一个非常广泛的问题,但就数组而言,它是逐个索引的比较。

在你的第一个代码块中,$ arr不等于$ arr1,因为30!= 10和10!= 30。

在第二个代码块中,您指定在索引0处,值为1.在索引1处,值为2,在索引2处,值为3.因此,您具有相同的数组。

答案 4 :(得分:0)

鉴于您的一些意见,我认为如果您阅读array type in php会很有用。主要是没有无钥匙阵列的事实 并且不要忘记comparison operators

答案 5 :(得分:0)

在PHP中,等式运算符是===,在数组=>内是正确的。根据您的指定,$arr !=$arr1可以20 !=3030!=20