私は次のような簡単な条件チェックをしようとしています:
$test = 1;
$test_ = $test==-1?"Test--1":$test==1?"Test-1":$test==0?"Test-0":"Test";
echo $test_;
出力は ですTest-0
が、 でなければなりませんTest-1
。
どれが問題になる可能性がありますか?
私は次のような簡単な条件チェックをしようとしています:
$test = 1;
$test_ = $test==-1?"Test--1":$test==1?"Test-1":$test==0?"Test-0":"Test";
echo $test_;
出力は ですTest-0
が、 でなければなりませんTest-1
。
どれが問題になる可能性がありますか?
これを試してください:条件に角かっこを入れてください。
$test = 1;
$test_ = ($test==-1)?"Test--1":($test==1?"Test-1":($test==0?"Test-0":"Test"));
echo $test_;
出力:
Test-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"));
// output Test-1
Ternary operator in PHP is left to right, therefore, its executed like this:
$test_ = (( ( $test==-1 ? "Test--1" :$test==1) ? "Test-1":$test==0)?"Test-0":"Test");