0

我想缩短以下 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);
    }
 }

谢谢

4

2 回答 2

3

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

于 2012-12-28T17:07:40.633 回答
1

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

return $l >= $min && ($l <= $max || $max == 0);
于 2012-12-28T17:13:12.240 回答