gpt4 book ai didi

php - PHP 的数组相等性是否要求元素顺序相同?

转载 作者:可可西里 更新时间:2023-10-31 22:54:15 25 4
gpt4 key购买 nike

根据 http://php.net/manual/en/language.operators.array.php :

$a == $b    Equality    TRUE if $a and $b have the same key/value pairs.
$a === $b Identity TRUE if $a and $b have the same key/value pairs in the same order and of the same types.

因此,我希望这两个数组具有相等性,但它们没有。

$a1=array('a','b');
$a2=array('b','a');
echo(($a1==$a2)?'equal':'not equal');

我可以先对数组进行排序,它们既相等又相同。

我是否误解了 PHP 手册? PHP 的数组相等性是否要求元素顺序相同?

编辑。发布的答案完美地回答了这个问题。可能的解决方法包括以下内容。虽然不是我最初问题的一部分,但我们将不胜感激任何关于最佳实现方式的建议。

<?php
$a1=array('a','b');
$a2=array('b','a');
echo((($a1==$a2)?'equal':'not equal').'<br>');
echo(((array_diff($a1, $a2) === array_diff($a2, $a1))?'equal':'not equal').'<br>');
sort($a1);
sort($a2);
echo((($a1==$a2)?'equal':'not equal').'<br>');
?>

输出:

not equal
equal
equal

最佳答案

那是因为:

在第一个数组中它是:

0 => a
1 => b

在第二个数组中是:

0 => b
1 => a

所以 valueskeys 相同,但不是!

因此,如果您更改第二个数组中的键,则它是 TRUE,因为值和键的值与键相同:

$a1 = array('a','b');
$a2 = array( 1 =>'b', 0 =>'a');
echo(($a1==$a2)?'equal':'not equal');

输出:

equal

关于php - PHP 的数组相等性是否要求元素顺序相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27331707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com