【问题标题】:PHP equality - where am I going wrong?PHP 平等 - 我哪里错了?
【发布时间】:2012-09-05 12:51:33
【问题描述】:

这让我发疯了。两个整数应该相等。

<?php

function getPort() {
    return 443;
}

$port = getPort(); 
var_dump(433, $port, $port == 433, 443 == $port, 433 == 433);

?>

在 PHP 5.2 和 5.4 中都有结果:

int(433)
int(443)
bool(false)
bool(true)
bool(true)

在前面的代码中,为什么 $port 不等于 443 而 443 确实 等于 $port?我一定是在做傻事吧?

【问题讨论】:

  • 443 和 433 ..错觉。
  • 这就是它的开始......喜欢它:)
  • 为什么第三个是假的?
  • @Basith 因为 443 !== 433。:)
  • @Basith 因为 $port 是 443,而不是 433。

标签: php integer equality


【解决方案1】:

小错字:

一旦您将 433 与 $port 而非 443 进行比较!

$port == 433

443 == $port

【讨论】:

  • 因为 433 == 433 和 443 != 433
  • @Fluffeh 因为433 == 433 是真的?或者你的意思是第三个?在这种情况下,$port 设置为 443,在比较中等于 443。
  • @MattHumphrey 是的,赶上了 443 :( 已删除问题-评论。+1 两个答案。
【解决方案2】:

您在第一个参数中使用 $port == 433,在第二个参数中使用 443,因此它是正确的。

所以,回答你的问题,是的;你在做一些愚蠢的事情! ;)

【讨论】:

    【解决方案3】:

    您在 $port 中设置 443 并与 433 进行比较。 这将始终返回 false。

    【讨论】: