PHP检查数组是否相同?

PHP检查数组是否相同?

问题描述:

我正在寻找一种方法来检查,如果两个数组是相同的,例如PHP检查数组是否相同?

$a = array(
    '1' => 12, 
    '3' => 14, 
    '6' => 11 
); 
$b = array(
    '1' => 12, 
    '3' => 14, 
    '6' => 11 
); 

这两个是相同的,但如果一个值发生改变,则返回false,我知道我可以写一个函数,但有一个已经建立?

+1

但是,如果一个单值被改变那么他们将不相同。这里有什么问题? –

+0

你甚至尝试过使用'==='吗? – animuson

您可以使用使用的

$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 

demo

+0

这个答案误导人们从搜索进来。 'array_diff'不适用于检查“相同的数组”。它也有一个前提,即密钥不会改变。使用array_diff添加另一个键以及其中一个现有值将不起作用,同时向第一个数组添加值或第二个数组给出不同的结果。 –

+0

@DustinGraham:你能给我演示一下你的意思吗?我对此有点困惑 –

+0

如果一个人到达这里寻找一种方法来判断两个数组是否相同,那么答案(你的)有第一个可能误导的'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