php - php 中 == 和 === WRT 数组的区别?

标签 php arrays identity equality

我正在阅读有关 php 的内容,它说,

== is Equality such that $a == $b is true if $a and $b have the same elements.

=== is Identity such that $a === $b is true if $a and $b have the same elements, with the same types, in the same order.

所以,我想我会尝试自己看看差异,然后用这个小脚本编写:

$a = array(1, 2, 3);
$b = array(2, 3, 1);
if ($a==$b) {echo "yeehaw!";} else {echo "nope";}
if ($a===$b) {echo "yup";} else {echo "nope";}

我的想法是,两个数组相等不需要相同的顺序。然而,当我运行这个时,我得到了“nope”和“nope”。

有什么区别?

最佳答案

您提供的数组具有相同的一组值,但键值对不同。

请尝试以下用例(不同顺序的相同键值对):

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

...和以下用例(不同的数据类型):

$a = array(1, 2, 3);
$b = array('1', '2', '3');

关于php - php 中 == 和 === WRT 数组的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17638015/

相关文章:

php - Opera 忽略高度/最大高度属性

php - 无法使用 Javascript AJAX 发送帖子数据从 Summernote textarea 获取值(value)

php - 如何在 linux 上的 php 中启用 --enable-soap?

java - 检查 String[] 中的 String 是否在 ArrayList<string> 中

.net - 使用 ASP.NET 和 WCF 跨层传递用户身份

php - 从当前时间戳默认获取日期时间

C# 从类数组中删除项目

javascript - 如何使用 jQuery 将数组添加到数组数组?

asp.net - Visual Studio 2019 中多个帐户的 DefaultAzureCredential 异常

sql - 如何检索通过 insert...select 插入的行的标识?