复杂的三元运算符

时间:2015-07-09 09:19:23

标签: php ternary-operator

我使用这个三元运算符。根据返回值

检查长度变量$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

我不知道我做错了什么。如果有什么不对的地方请指正。

2 个答案:

答案 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在单个语句中使用多个三元运算符时的行为是不明显的:

DOCS

Check it here