Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 条件语句不';行不通_Php_If Statement_Conditional Statements - Fatal编程技术网

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");