在PHP中,变量赋值(等号)和函数都优先于或者运算符。这意味着首先执行一个函数,然后使用函数的返回值进行比较。反过来,当您使用两个值/变量与一个或运算符时,它首先比较两个值,然后返回一个布尔值。
因此,本例中的评估顺序为:
$result = mysql_query($query) or die();
> mysql_query($ query)
返回DQL查询的结果集(如SELECT),或返回DDL,DML或DCL查询(如CREATE,DROP,INSERT,UPDATE,DELETE和ALTER)的布尔值。
> $ result = mysql_query($ query)
此查询执行的结果分配给变量$ result。
> $ result / * = … * /或die();
如果它是结果集或真实的,它被认为是真实的(也就是“真实”),所以条件得到满足,声明在此结束。否则脚本会死()。
echo是一个语言构造,因此实际上并不返回一个值,因此在进行比较之前不会像函数一样运行。
由于$ name或“Anonymous”总是为真,因为字符串“Anonymous”不是空的,因此真实的是,echo隐含地将true转换为1,因此该输出。
本例中的评估顺序为:
$name = "John Doe";
echo $name or "Anonymous";
> $ name =“John Doe”;相当简单 – 将字符串John Doe分配给$ name。> $ name或“Anonymous”PHP发现$ name包含字符串John Doe,所以最终被评估的是以下内容:>“John Doe”或“Anonymous”由于这里至少有一个字符串不为空,所以认为是真实的,条件是满足的。此评估返回true。> echo true / * $ name或… * /;转换为1并打印数字1。