PHP 如果语句比较清晰


PHP if statement comparison clarity

我在使用 PHP 时遇到了问题。我对它相当陌生,但这让我很沮丧!下面的 falsify() 函数有效。如果我比较(伪造 == 假),那么它会回显假,但为什么有必要呢?为什么没有比较,证伪不返回错误?

<?php
if (falsify) {
  echo "true";
} else {
  echo "false";
}
function falsify(){
  return false;
}
?>

你需要使用 as

if (falsify()){
}

不确定你如何没有得到未定义的常量错误。

如果您使用未定义的常量,PHP 会假定您指的是名称 常量本身,就像您将其称为字符串一样(CONSTANT"CONSTANT")。此时将发出级别 E_NOTICE 的错误 发生。另请参阅有关$foo[bar]为什么错误的手动条目(除非 你首先define() bar作为一个常数)...

http://www.php.net/manual/en/language.constants.syntax.php

不带() falsify是一个隐式字符串:

var_dump(falsify);
var_dump(falsify());
function falsify() {
    return false;
}

http://codepad.org/3Kb6vcMO

生产:

string(7) "falsify"
bool(false)

第一个计算结果为true,因此if认为它在逻辑上是true

你只使用了 falsify 而不是 falsify()这意味着在 php 中伪造 !=0 。所以不是 0 的东西变成了真的.它返回真实,最终变成——

 if(true)

因此输出.