嗨,我只是想知道为什么这个代码产生(至少对我来说)一个不正确的结果。好吧也许是我的错
$description = 'Paper: ' . ($paperType == 'bond') ? 'Bond' : 'Other';
我猜如果paperType等于“Bond”,则说明为“Paper:如果paperType不等于“Bond”,则说明为“纸张:其他人。但是当我运行这段代码时,结果是描述要么是“邦德”要么是“其他”,这让我想知道字符串“纸:”“走了?
nimxete21#
$description = 'Paper: ' . ($paperType == 'bond' ? 'Bond' : 'Other');
尝试添加括号,以便字符串按正确顺序连接到另一个字符串。
falq053o2#
与操作符优先级有关,需要做以下几点:
$description = 'Paper: ' . (($paperType == 'bond') ? 'Bond' : 'Other');
q0qdq0h23#
我想大家都给出了解决方案,我想贡献一下这个意外结果的原因。首先,您可以检查原点以及运算符的求值方式(左、右、关联等)。http://php.net/manual/fa/language.operators.precedence.php现在我们来分析一下你的句子。
$paperType = 'bond'; $description = 'Paper:'. ($paperType == 'bond') ? 'Bond': 'Other';
1.我们查看该表,发现首先计算圆括号,然后计算.""(连接),最后计算三元运算符“?”,因此我们可以将其关联如下:
// evaluate the parenthesis ... ($paperType == 'bond') $description = ('Paper:'. 1)? 'Bond': 'Other'; //result $description = 'Paper: 1'? 'Bond': 'Other';
1.现在我们有了三元运算符,我们知道字符串的值为“true”// php documentation当转换为布尔值时,下列值 被视为错误:...空字符串和字符串“0”
$description = true? 'Bond': 'Other';
1.终于
$description = 'bond';
我希望我已经澄清了这个问题。你好。
3条答案
按热度按时间nimxete21#
尝试添加括号,以便字符串按正确顺序连接到另一个字符串。
falq053o2#
与操作符优先级有关,需要做以下几点:
q0qdq0h23#
我想大家都给出了解决方案,我想贡献一下这个意外结果的原因。
首先,您可以检查原点以及运算符的求值方式(左、右、关联等)。
http://php.net/manual/fa/language.operators.precedence.php
现在我们来分析一下你的句子。
1.我们查看该表,发现首先计算圆括号,然后计算.""(连接),最后计算三元运算符“?”,因此我们可以将其关联如下:
1.现在我们有了三元运算符,我们知道字符串的值为“true”
// php documentation当转换为布尔值时,下列值 被视为错误:
...空字符串和字符串“0”
1.终于
我希望我已经澄清了这个问题。你好。