PHP检查数组是否相同?
我正在寻找一种方法来检查,如果两个数组是相同的,例如PHP检查数组是否相同?
$a = array(
'1' => 12,
'3' => 14,
'6' => 11
);
$b = array(
'1' => 12,
'3' => 14,
'6' => 11
);
这两个是相同的,但如果一个值发生改变,则返回false,我知道我可以写一个函数,但有一个已经建立?
您可以使用使用的
$a === $b // or $a == $b
例如:
<?php
$a = array(
'1' => 12,
'3' => 14,
'6' => 11
);
$b = array(
'1' => 12,
'3' => 14,
'6' => 11
);
echo ($a === $b) ? 'they\'re same' : 'they\'re different';
echo "\n";
$b['1'] = 11;
echo ($a === $b) ? 'they\'re same' : 'they\'re different';
将返回
they're same
they're different
这个答案误导人们从搜索进来。 'array_diff'不适用于检查“相同的数组”。它也有一个前提,即密钥不会改变。使用array_diff添加另一个键以及其中一个现有值将不起作用,同时向第一个数组添加值或第二个数组给出不同的结果。 –
@DustinGraham:你能给我演示一下你的意思吗?我对此有点困惑 –
如果一个人到达这里寻找一种方法来判断两个数组是否相同,那么答案(你的)有第一个可能误导的'array_diff()'建议,试试这个:'' $ a = array('x'=> true,'y'=> false); $ b = array('x'=> true,'y'=> true,'z'=> false); print_r(array_diff($ a,$ b));'显然它们不相同,但'array_diff'没有显示任何区别。 –
你可以只使用$a == $b
如果订单无关紧要,或者$a === $b
如果订单确实重要。
例如:
$a = array(
'1' => 12,
'3' => 14,
'6' => 11
);
$b = array(
'1' => 12,
'3' => 14,
'6' => 11
);
$c = array(
'3' => 14,
'1' => 12,
'6' => 11
);
$d = array(
'1' => 11,
'3' => 14,
'6' => 11
);
$a == $b; // evaluates to true
$a === $b; // evaluates to true
$a == $c; // evaluates to true
$a === $c; // evaluates to false
$a == $d; // evaluates to false
$a === $d; // evaluates to false
但是,如果一个单值被改变那么他们将不相同。这里有什么问题? –
你甚至尝试过使用'==='吗? – animuson