三元运算符和字符串串联怪癖?

2020/11/14 11:41 · php ·  · 0评论

嗨,我只是想知道为什么这段代码(至少对我来说)产生错误的结果。

好吧,我可能在这里错了

$description = 'Paper: ' . ($paperType == 'bond') ? 'Bond' : 'Other';

我猜想,如果paperType等于“ Bond”,则说明为“ Paper:Bond”,如果paperType不等于“ Bond”,则说明为“ Paper:Other”。

但是,当我运行这段代码时,结果描述是'Bond'或'Other',让我想知道字符串'Paper:'到哪里了???

$description = 'Paper: ' . ($paperType == 'bond' ? 'Bond' : 'Other');

尝试添加括号,以便按正确的顺序将字符串连接到字符串。

它与运算符优先级有关。您必须执行以下操作:

$description = 'Paper: ' . (($paperType == 'bond') ? 'Bond' : 'Other');

我想每个人都给出了解决方案,我想为意外结果做出贡献。

首先,您可以在此处检查原点以及如何评估运算符(左,右,关联等)。

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';

2)现在,我们有了三元运算符,我们知道字符串的计算结果为“ true”

// php文档转换为布尔值时,以下值被认为是FALSE:

...空字符串,字符串“ 0”

$ description = true? 'Bond': 'Other';

3)最后

$ description = 'bond';

我希望我已经澄清了这个问题。问候。

本文地址:http://php.askforanswer.com/sanyuanyunsuanfuhezifuchuanchuanlianguaipi.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!