PHP字符串中的三元运算符

18

我想在字符串内使用简单的三元运算符进行评估,但似乎找不到正确的语法。

我的代码如下:

foreach ($this->team_bumpbox as $index=>$member) 
    echo ".... class='{((1) ? abc : def)}'>....";

但我似乎无法使其正常工作。有关如何实现此操作的任何想法吗?


如果您想使用任意表达式,请使用字符串拼接。在双引号字符串中,只有简单的变量和数组语法,或变量表达式可用。这里都没有使用。 - mario
一个真实的例子里面应该不会把“1”作为条件参数吧? - Oliver Charlesworth
是的,真实的例子应该有一个真正的表达式。只是好奇,因为语法看起来很不错 :) - JonMorehouse
1
PHP应该如何知道字符串中的内容实际上是php代码?这是你的工作要告诉它。 - Marc B
2个回答

31

你不能直接在字符串内这样做,在字符串后面需要使用点拼接的方式。像这样:

echo ".... class='" . (1 ? "abc" : "def") . "'>....";

7

实际上,你可以这样做:

$if = function($test, $true, $false)
{
  return $test ? $true : $false;
};

echo "class='{$if(true, 'abc', 'def')}'";

我会让你决定它是纯粹的优雅还是纯粹的疯狂。但请注意,与真正的条件运算符不同,函数的两个参数总是被评估。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接