2013-03-04 57 views
-1

我试图做一个简单的健康检查,如:条件语句不起作用

$test = 1; 
$test_ = $test==-1?"Test--1":$test==1?"Test-1":$test==0?"Test-0":"Test"; 
echo $test_; 

输出是Test-0但必须Test-1

这可能是问题所在?

+4

的问题是,你一叠三元运营商相互转化。不要那样做......这很丑陋,而且是一个维护地狱。 – 2013-03-04 11:52:07

+0

问题是,你在嵌套三元组时没有注意到在PHP文档中这样做的警告......'如果'/'else'更具可读性,并且更直观 – 2013-03-04 11:52:46

+0

如果我必须完成你所做的,我会这样做'echo $ test_ =“Test-”。 $ test;' – Ravi 2013-03-04 11:58:31

回答

3

试试这个:把括号内为条件。

$test = 1; 
$test_ = ($test==-1)?"Test--1":($test==1?"Test-1":($test==0?"Test-0":"Test")); 
echo $test_; 

输出:

Test-1 
+0

括号对于三元运算非常有用:) – Jimbo 2013-03-04 12:00:56

+0

好的,它的工作原理! :)谢谢..但为什么它与括号的作品,它不工作没有? – JackTurky 2013-03-04 12:47:51

1

改变这种

$test_ = $test==-1?"Test--1":$test==1?"Test-1":$test==0?"Test-0":"Test"; 

$test_ = $test==-1?"Test--1":($test==1?"Test-1":($test==0?"Test-0":"Test")); 

工作示例http://viper-7.com/msuCyk

// output Test-1 
0

在PHP三元操作符是从左到右,因此,它的执行是这样的:

$test_ = ((($test==-1 ? "Test--1" :$test==1) ? "Test-1":$test==0)?"Test-0":"Test");