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 ( )可以包含任何最终计算结果为truefalse 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语句将继续。 否则它将被忽略