PHP字符串中的三元运算符

Jon*_*use 10 php ternary-operator ternary

我想在字符串内部评估一个简单的三元运算符,但似乎无法找到正确的语法.

我的代码看起来像这样:

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

但我似乎无法让它正常工作.有关如何实现这一点的任何想法?

svi*_*gen 18

你不能在字符串里面这样做.你需要点连接.像这样的东西:

echo ".... class='" . (1 ? "abc" : "def") . "'>....";
Run Code Online (Sandbox Code Playgroud)


Ill*_*ack 7

好吧,你实际上可以这样做:

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

echo "class='{$if(true, 'abc', 'def')}'";
Run Code Online (Sandbox Code Playgroud)

我会让你决定这是纯粹的优雅还是纯粹的疯狂。但请注意,与真正的条件运算符不同,函数的两个参数始终都会被求值。然而,一旦您可以计算任意函数,就没有什么可以阻止您将其与任何通用表达式一起使用:

$expr = function($x)
{
  return $x;
};

echo "class='{$eval(true ? 'abc' : 'def')}'";
Run Code Online (Sandbox Code Playgroud)