首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP数组比较算法

PHP数组比较算法
EN

Stack Overflow用户
提问于 2012-01-09 06:00:10
回答 2查看 1K关注 0票数 17

在尝试模拟一些PHP行为时,我偶然发现了这一点:

代码语言:javascript
复制
    $a=array(0 => 1, 'test' => 2);
    $b=array('test' => 3, 0 => 1);
    var_dump($a==$b, $a>$b, $b>$a);

根据var_dump的输出,$b$a大。在PHP手册中有一个Transcription of standard array comparison,它说明数组的值是逐个比较的,如果第一个数组中的键在第二个数组中丢失了,那么这些数组就是不可比较的。到目前一切尚好。但如果我尝试这样做(仅在$a的第一个元素中更改):

代码语言:javascript
复制
    $a=array(0 => 2, 'test' => 2);
    $b=array('test' => 3, 0 => 1);
    var_dump($a==$b, $a>$b, $b>$a);

所有三个比较结果都是false。这对我来说似乎是“不可比较的”(因为>结果与<结果相同,而数组也不是==,这没有任何意义),但这并不符合PHP手册中的转录。这两个键在两个数组中都存在,我预计这次$a会更大,因为$a中键0的内容更大(2比1)。

我试着深入研究PHP源代码,在zend_hash.c中找到了zend_hash_compare(),但那里的代码似乎可以像手册中描述的那样工作。

这里发生了什么事?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8781744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档