【发布时间】:2014-01-03 07:35:35
【问题描述】:
我会发布一个问题,希望stackoverflow 管理员不要将此作为重复的主题,因为我找不到对此类事情的解释。
我们都知道,在类型杂耍之后,这个比较看起来像这样:
false == array() -> (bool) == false (bool) array() -> false == false -> true
到目前为止,没有什么异常。
问题是试图对这种事情寻求解释,但答案没有意义,然后似乎主题重复,但实际上它不是重复的主题。
问题是 php 如何解释下面的比较:
'' == array()
有人说:
“将空字符串转换为数组”
结果是: (array) '' == array() -> array('') == array() -> false
似乎是对的。
但最大的问题就在这里,如下:
'' == array('')
因为它不返回 true ?如果根据某种理论:
'' == array('') -> 这应该返回 true
'' == array('') -> (array)'' == array('') -> array('') == array('')
但是返回false。
你能一劳永逸地解释这个问题吗?
【问题讨论】:
-
当数组与字符串比较时,数组更大。 (php.net/manual/en/…)
-
简而言之:garbage in -garbage out 您应该首先决定为什么需要比较数组和字符串。我有 99% 的把握,在正常情况下,您总是会比较相同类型的实体
-
乔尼,你能解释一下吗?
-
糟糕,这是错误的语言链接,这里又是正确的:PHP type comparison tables
-
@user3151657 我的逻辑是,一个袋子可以装苹果
var_dump(array() > "");,但一个苹果没有袋子var_dump("" > array());和一个array("")甚至包含一个字符串var_dump(array("") > "");,就像一个装有苹果的袋子: D
标签: php