我是来自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的结果,这是第一个结果,而不是第二个结果。我无法弄清楚差异。
答案 0 :(得分:3)
and
的{{3}}低于三元运算符(?
和:
)。因此,您需要将其包装在括号中((
和)
),以便首先对其进行求值。
请注意,如果您使用过&&
,则无需使用额外的括号。
答案 1 :(得分:2)
查看PHP文档 - Operator Precedence and
几乎是最后一次。
如果您将and
更改为&&
,则其排名将高于?: