PHP 字符串连接(一个来自变量,另一个来自三元运算符)给出意想不到的结果

标签 php string

我正在通过示例描述问题: 让,

$actual_food['Food']['name'] = 'Tea';
$actual_food['Food']['s_name'] = 'Local';

我按以下方式连接上述变量。

$food_name = $actual_food['Food']['name']." ".!empty($actual_food['Food']['s_name']) ? "- ".$actual_food['Food']['s_name'] : "";

当我打印 $food_name 时然后输出像'-Local'但不打印$actual_food['Food']['name']内容。

我觉得这个问题有点傻,但我的好奇心想知道。提前致谢。

最佳答案

使用三元运算符时需要注意串联。你可以试试

$food_name = ($actual_food['Food']['name'])." ".(!empty($actual_food['Food']['s_name']) ? "- ".$actual_food['Food']['s_name'] : "");
echo $food_name;// Tea - Local

在这里,我将变量括在括号 ()

这是因为我们称之为 operator precedence .如果我们不将三元运算符括在括号中,那么您的代码将被解释为

($actual_food['Food']['name'] . " " . !empty($actual_food['Food']['s_name']) ?...;

因此,您只需将三元运算符括起来即可进行正确解释

关于PHP 字符串连接(一个来自变量,另一个来自三元运算符)给出意想不到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32111007/

相关文章:

php - 包括路径和 cron

php - Laravel Eloquent Complex Join Statement - 提供了具体的例子

c++ - 接受 C++ 字符串和 C 风格字符串的通用类

java - 莫尔斯电码到英语/英语到莫尔斯电码转换器

c++ - 动态增加和减少字符数组?

ubuntu 中的 php 项目。正确路径但禁止访问

php - mysql 结果返回 ?(问号)而不是 Ö 等

php - yii2 验证码不会在页面刷新时改变

python - 如何将函数名作为字符串获取?

Ruby:你能覆盖 "X" "x" "X"#=> "XxX"