堆叠三元表达式

时间:2013-06-23 16:55:16

标签: php

我正在尝试为此脚本堆叠三元表达式,但我一直在意外地')'

这是我的剧本

$uri = 9;
$build_status = 20;

/**
Using Ifs
*/
if($uri == 20)
{
echo 'ci=>passing';
}
if($uri < 20 && $uri > 10 && $uri != $build_status)
{
echo "ci=>almost failing";
}
if($uri < 20 && $uri > 18 && $uri != $build_status)
{
echo "ci=>test your code!";
}
elseif($uri < 5)
{
echo "ci=>failed.";
}

/**
Stacking
*/
echo (($uri==20 ? 'ci=>passing') ? ($uri < 20 && $uri > 10 && $uri != $build_status) : 'ci=>almost failing') ;

我哪里错了?

2 个答案:

答案 0 :(得分:2)

($uri==20 ? 'ci=>passing')是语法错误。你需要在parens里面:

+1关于堆叠三元表达式的评论。这与PHP更相关,因为解析器在嵌套的三元表达式方面非常糟糕。

答案 1 :(得分:2)

echo ($uri==20 ? 'ci=>passing' : 
     ($uri < 20 && $uri > 10 && $uri != $build_status ? 'ci=>almost failing' :
     ($uri < 20 && $uri > 18 && $uri != $build_status ? 'ci=>test your code!' :
     ($uri < 5 ? 'ci=>failed.' : "[doesn't match previous conditions]"
))));

在大多数语言中,括号是可选的,但php需要它们,因为三元运算符是左关联的 http://www.phpsadness.com/sad/30