速记IF不起作用。为什么?

时间:2012-12-28 17:05:34

标签: php

我想缩短以下if语句:

 function is_string_length_correct( $string, $min, $max = 0 ) {
    if (is_string($string)) {
        $l = mb_strlen($string);
        if ($max != 0) {
            return ($l >= $min && $l <= $max);
        } else {
            return ($l >= $min);
        }
    }
  }

有人可以解释一下为什么跟随速记如果不起作用?

function is_string_length_correct( $string, $min, $max = 0 ) {
    if (is_string($string)) {
        $l = mb_strlen($string);
        return ($max != 0) ? ($l >= $min && $l <= $max) : ($l >= $min);
    }
 }

谢谢

2 个答案:

答案 0 :(得分:3)

语法很好。问题可能在于$max在运行时的值。 0是假的,所以你要将它与整数零进行比较,它应该是($max !== 0)

答案 1 :(得分:1)

您也可以只使用布尔运算符编写它:

return $l >= $min && ($l <= $max || $max == 0);