if($ variable)是如何工作的?
可能重复:
关于PHP中的if语句
在PHP脚本中,像这样的if语句检查什么?
<?php if($variable){ // code to be executed } ?>
我已经多次看到它在脚本中的使用,现在我真的想知道它“寻找什么”。 这不是什么东西 这只是一个简单的variables里面的if语句…我无法find任何关于这个,任何地方的结果,所以显然我会看起来愚蠢发布这一点。
构造函数if ($variable)
testing$variable
是否计算出任何“truthy”值。 它可以是布尔值TRUE
,也可以是非空的非空值或非零数字。 查看PHP文档中的布尔值评估列表。
从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)
不适合在testingvariables或数组键是否被初始化时使用。 如果variables或数组键不存在,则会导致E_NOTICE Undefined variable $variable
。
如果将$variable
转换$variable
布尔值,并根据该转换的结果进行操作。
有关更多信息,请参阅布尔文档。
要明确地将一个值转换为布尔值,可以使用(bool)或(boolean)强制转换。 但是,在大多数情况下, 转换是不必要的,因为如果运算符 ,函数或控制结构需要布尔参数, 则会自动转换值。
它检查$variable
是否为true
。 有几个正常值的计算结果为true
,请参阅PHPtypes比较表 。
if ( )
可以包含任何最终计算结果为true
或false
expression式 。
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...
以下列表解释了在PHP中被认为是false
的内容:
- 布尔值FALSE本身
- 整数0(零)
- 浮点数0.0(零)
- 空string和string“0”
- 具有零元素的数组
- 具有零成员variables的对象(仅限PHP 4)
- 特殊types的NULL(包括未设置的variables)
- 由空标签创build的SimpleXML对象
其他每个值都被视为TRUE(包括任何资源)。
来源: http : //www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting
在你的问题中,一个variables是在if()
语句内求值的。 如果variables未设置,则根据上面的列表将其计算为false。 如果它被设置,或者有一个值,它将评估为true,因此执行if()
分支内的代码。
其中任何一个都被认为是错误的(所以//code to be executed would
不会运行)
- 布尔值FALSE本身
- 整数0(零)
- 浮点数0.0(零)
- 空string和string“0”
- 具有零元素的数组
- 具有零成员variables的对象(仅限PHP 4)
- 特殊types的NULL(包括未设置的variables)
- 由空标签创build的SimpleXML对象
所有其他的值应该是真实的。 更多的信息在PHP的布尔人手册 。
试着看看这个老的扩展的“ PHP真相表 ”,让你的脑袋围绕着所有的各种坑洼等待爆胎。 开始的时候要尽可能的明确你的代码, 尝试和testing相同的东西,而不是相同的。
这完全取决于您正在检查的对象的值types。 在PHP中,每个对象types都有一个特定的值,如果检查的话会返回false。 这些的解释可以在这里find: http : //php.net/manual/en/language.types.boolean.php一些值为false是
float:0.0
int:0
布尔值:false
string:''
数组:[](空)
对象:对象有0个属性/为空
空值
它与大多数其他语言有点不同,但一旦你习惯了它可以非常方便。 这就是为什么你可能会看到很多像这样的陈述
$result = mysqli_multi_query($query) or die('Could not execute query');
PHP中的一个函数只需要返回一个值types,这个types的值为false就可以工作。 如果第一个参数为true,则PHP中的OR运算符将不会评估其第二个参数(因为不pipe第二个参数的输出如何,or语句将仍然通过),并且这样的行将尝试调用查询并将结果赋值给$ result 。 如果查询失败,并且该函数返回一个假值,那么该线程将被终止并显示“无法执行查询”。
如果函数成功运行(true)或variables存在(true) boolean
,if语句将继续。 否则它将被忽略