我想缩短以下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);
}
}
谢谢
答案 0 :(得分:3)
语法很好。问题可能在于$max
在运行时的值。 0
是假的,所以你要将它与整数零进行比较,它应该是($max !== 0)
。
答案 1 :(得分:1)
您也可以只使用布尔运算符编写它:
return $l >= $min && ($l <= $max || $max == 0);