Php 条件语句不';行不通
我试着做一个简单的条件检查,比如:Php 条件语句不';行不通,php,if-statement,conditional-statements,Php,If Statement,Conditional Statements,我试着做一个简单的条件检查,比如: $test = 1; $test_ = $test==-1?"Test--1":$test==1?"Test-1":$test==0?"Test-0":"Test"; echo $test_; 输出为Test-0,但必须为Test-1 哪一个可能是问题?更改此选项 $test_ = $test==-1?"Test--1":$test==1?"Test-1":$test==0?"Test-0":"Test"; 到 工作示例 试试这个:为条件放上括号 $tes
$test = 1;
$test_ = $test==-1?"Test--1":$test==1?"Test-1":$test==0?"Test-0":"Test";
echo $test_;
输出为Test-0
,但必须为Test-1
哪一个可能是问题?更改此选项
$test_ = $test==-1?"Test--1":$test==1?"Test-1":$test==0?"Test-0":"Test";
到
工作示例
试试这个:为条件放上括号
$test = 1;
$test_ = ($test==-1)?"Test--1":($test==1?"Test-1":($test==0?"Test-0":"Test"));
echo $test_;
输出:
Test-1
PHP中的三元运算符是从左到右的,因此其执行方式如下:
$test_ = (( ( $test==-1 ? "Test--1" :$test==1) ? "Test-1":$test==0)?"Test-0":"Test");
问题是三元运算符彼此堆叠。不要这样做…这是一个丑陋的维护地狱。问题是你在嵌套ternaries时没有注意PHP文档中关于这样做的警告
如果
/其他
更具可读性和直观性,如果我必须完全按照您所做的那样做,我会这样做echo$test=“test-”$试验代码>方括号对于三元运算非常有用:)好的,它可以工作!:)谢谢但是为什么它可以用括号工作,没有括号就不能工作呢?
Test-1
$test_ = (( ( $test==-1 ? "Test--1" :$test==1) ? "Test-1":$test==0)?"Test-0":"Test");