您好我只是想知道为什么这个代码收益率(至少我)不正确的结果。

好了,可能我在这里有毛病

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

我猜测,如果paperType等于“债券”,那么描述为“纸:债券”,如果paperType不等于“债券”,则描述为“纸:其它”。

但是,当运行此代码的结果是描述可以是“债券”或“其他”,只剩下我 想知道字符串“论文:”去???

有帮助吗?

解决方案

$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)我们现在有三元运算符,我们知道,一个字符串被评为“真正的”

// PHP文档 当转换为布尔型,下面的值被认为是FALSE:

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

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

3)最后

$ description = 'bond';

希望已澄清的问题。 问候。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top