Php操作员需要帮助

时间:2011-12-22 04:52:29

标签: php

我是来自C ++的背景和php的新手,有人请帮助我解决两者之间的区别:

$totalupdatedrows = (count($rows) == 1 and !isset($rows[0]->updated_by))  ? 0 : count($rows);


$totalupdatedrows = count($rows) == 1 and !isset($rows[0]->updated_by)  ? 0 : count($rows);

假设count($ rows)= 1且$ rows [0] - > updated_by = null。请注意,第一个只有一个额外的包装括号。

我从第一个声明中得到了正确的结果。我期望得到0的结果,这是第一个结果,而不是第二个结果。我无法弄清楚差异。

2 个答案:

答案 0 :(得分:3)

and的{​​{3}}低于三元运算符(?:)。因此,您需要将其包装在括号中(()),以便首先对其进行求值。

请注意,如果您使用过&&,则无需使用额外的括号。

答案 1 :(得分:2)

查看PHP文档 - Operator Precedence and几乎是最后一次。

如果您将and更改为&&,则其排名将高于?: