有没有办法在字符串中使用条件?
$x = 'hello';
$y = 'mister'; // is nullable
$z = 'panda';
$msg = $x . ' ' . {($y == 'mister') ? 'dear ' : ' ' } . $z
// Output: hello dear panda
答案 0 :(得分:4)
您应该将{}
替换为()
。此外,不需要()
周围的$y=='mister'
。你应该尝试将它们保持在(可读)最低限度。
$msg = $x . ' ' . ($y == 'mister' ? 'dear ' : ' ' ) . $z;
答案 1 :(得分:4)
对于三元运算符,我们不使用{ }
括号,而是必须使用( )
。
替换您的代码
$msg = $x . ' ' . {($y == 'mister') ? 'dear ' : ' ' } . $z
与
$msg = $x . ' ' . (($y == 'mister') ? 'dear ' : ' ' ) . $z
答案 2 :(得分:3)
将{}
替换为()
,它将起作用:
$x = 'hello';
$y = 'mister'; // is nullable
$z = 'panda';
$msg = $x . ' ' . (($y == 'mister') ? 'dear ' : ' ' ) . $z;
echo $msg;
答案 3 :(得分:0)
如果我理解你的问题,你不打算知道你是否可以在字符串中使用条件,但是你想为字符串赋值。要分配的值取决于条件,可以写为
$x = 'hello';
$y = 'mister'; // is nullable
$z = 'panda';
$msg = $x . ' ';
if ($y == 'mister') {
$msg .= $x . 'dear ';
}
$msg .= $z;
// Output: hello dear panda
但是,这有点长,你打算使用?运营商。错误是您使用了大括号{}。这是修复:
$x = 'hello';
$y = 'mister'; // is nullable
$z = 'panda';
$msg = $x . ' ' . (($y == 'mister') ? 'dear ' : ' ' ) . $z;
// Output: hello dear panda