Я пытаюсь установить тройные выражения для этого скрипта, но я все время становлюсь неожиданным »)
Вот мой сценарий
$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') ;
Где я иду не так?
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
($uri==20 ? 'ci=>passing')
является синтаксической ошибкой. Вам нужно :
внутри parens.
+1 к комментарию о сложении тройного выражения. Это еще более актуально для PHP, потому что синтаксический анализатор ужасно нарушен в отношении вложенных тернарных выражений.