代码:
$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)
答案 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)
===
,在数组=>
内是正确的。根据您的指定,$arr !=$arr1
可以20 !=30
,30!=20
。