我使用这个三元运算符。根据返回值
检查长度变量$len
我的长度取自
$len = strlen($indChar); // values up to 3 ... 8
当它传递值3时奇怪地返回30
$lft = ($len <= 4) ? 10 :
((5 <= $len) && ($len <= 6)) ? 20 :
((7 <= $len) && ($len <= 8)) ? 30 : 35;
var_dump($lft); //30
我不知道我做错了什么。如果有什么不对的地方请指正。
答案 0 :(得分:1)
问题在于使用条件。将每个条件括在单独的括号中。
$len = 3
$lft = ($len <= 4) ? 10 :
(((5 <= $len) && ($len <= 6)) ? 20 :
(((7 <= $len) && ($len <= 8)) ? 30 : 35));
echo $lft; // 10
答案 1 :(得分:1)
使用()
分别指定条件。试试 -
$len = 3;
$lft = ($len <= 4) ? 10 :
(((5 <= $len) && ($len <= 6)) ? 20 :
(((7 <= $len) && ($len <= 8)) ? 30 : 35));
echo $lft; // 10
建议您避免“堆叠”三元表达式。 PHP在单个语句中使用多个三元运算符时的行为是不明显的: