我正在通过示例描述问题: 让,
$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/