在PHP脚本中 - 像这样的if语句检查什么?
<?php if($variable){ // code to be executed } ?>
我已经多次在脚本中看到它,现在我真的想知道它“寻找”的内容。它没有遗漏任何东西;它只是一个if语句中的一个简单变量......我无法在任何地方找到任何关于此的结果,所以很明显我会发布这个愚蠢的帖子。
答案 0 :(得分:68)
构造if ($variable)
测试以查看$variable
是否评估任何“真实”值。它可以是布尔TRUE
,也可以是非空,非NULL值或非零数字。查看布尔评估列表in the PHP docs.
从PHP文档:
var_dump((bool) ""); // bool(false)
var_dump((bool) 1); // bool(true)
var_dump((bool) -2); // bool(true)
var_dump((bool) "foo"); // bool(true)
var_dump((bool) 2.3e5); // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array()); // bool(false)
var_dump((bool) "false"); // bool(true)
但请注意,在测试变量或数组键是否已初始化时,if ($variable)
不适合使用。如果变量或数组键尚不存在,则会产生E_NOTICE Undefined variable $variable
。
答案 1 :(得分:7)
如果将$variable
转换为布尔值,则根据转换的结果进行操作。
有关详细信息,请参阅boolean文档。
要将值显式转换为boolean,请使用(bool)或(boolean)强制转换。但是,在大多数情况下,强制转换是不必要的,因为如果运算符,函数或控制结构需要布尔参数,将自动转换一个值。
答案 2 :(得分:4)
以下列表说明了在PHP中考虑评估false
的内容:
其他每个值都被视为TRUE(包括任何资源)。
来源:http://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting
在您的问题中,变量在if()
语句中进行评估。如果未设置该变量,则根据上面的列表将其评估为false。如果已设置或具有值,则它将评估为true,从而在if()
分支内执行代码。
答案 3 :(得分:3)
它会检查$variable
是否评估为true
。有几个正常值评估为true
,请参阅PHP type comparison tables。
if ( )
可以包含最终评估为true
或false
的任何表达式。
if (true) // very direct
if (true == true) // true == true evaluates to true
if (true || true && true) // boils down to true
$foo = true;
if ($foo) // direct true
if ($foo == true) // you get the idea...
答案 4 :(得分:1)
其中任何一个都被认为是假的(因此//code to be executed would
没有运行)
所有其他值都应该是真的。有关PHP Booleans manual的更多信息。
答案 5 :(得分:1)
试着看看这个旧的扩展“php truth table”,让你的头围绕着等待爆胎的所有各种坑洼。在开始时尽可能明确地使用任何分叉代码的比较运算符。尝试并测试being identical而不是等于。
答案 6 :(得分:0)
它完全取决于您要检查的对象的值类型。在PHP中,每个对象类型都有一个值,如果选中,则返回false。可以在此处找到对这些的解释:http://php.net/manual/en/language.types.boolean.php一些评估为false的值是
float:0.0
int:0
布尔值:false
string:''
数组:[](空)
object:object有0个属性/为空
NULL
它与大多数其他语言略有不同,但一旦你习惯它,它就会非常方便。这就是为什么你可能会看到很多语句,比如
$result = mysqli_multi_query($query) or die('Could not execute query');
PHP中的函数只需要返回一个值为false的值类型,这样就可以了。如果第一个参数为true,则PHP中的OR运算符不会计算其第二个参数(因为无论第二个参数的输出如何,or语句仍将通过),这样的行将尝试调用查询并将结果分配给$ result 。如果查询失败并且函数返回false值,则该线程被终止并且打印出“无法执行查询”。
答案 7 :(得分:-1)
如果函数成功运行(true)或变量存在(true)boolean
,则if语句将继续。否则将被忽略