Php 如果没有',则使用速记;不行。为什么?

Php 如果没有',则使用速记;不行。为什么?,php,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 {

我想缩短以下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);
        }
    }
  }
函数的字符串长度正确($string,$min,$max=0){
如果(是字符串($string)){
$l=mb_strlen($string);
如果($max!=0){
返回($l>=$min&$l=$min);
}
}
}
有人能解释一下为什么下面的简写if不起作用吗

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);
    }
 }
函数的字符串长度正确($string,$min,$max=0){
如果(是字符串($string)){
$l=mb_strlen($string);
返回($max!=0)-($l>=$min&&$l=$min);
}
}

谢谢

语法很好。问题可能在于运行时的
$max
0
是错误的,因此您将其与整数0进行比较,它应该是
($max!==0)

语法很好。问题可能在于运行时的
$max
0
是错误的,因此您将其与整数0进行比较,它应该是
($max!==0)

您也只能使用布尔运算符写入它:

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

return$l>=$min&($l您还可以仅使用布尔运算符编写它:

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


return$l>=$min&&$l完整版本有效吗?因为短版本是正确的。尝试转储$l、$min和$max。什么“不起作用”mean?Crashing?在什么特定条件下返回错误的结果?就目前情况而言,这不会重做。@PraveenKumar完整版本可以工作。我尝试了很多不同的组合,
$l
$max
$min
,但无法让它们返回不同的结果。完整版本可以工作吗?因为短版本是正确的。尝试转储$l、$min和$max。什么“不起作用”mean?Crashing?在什么特定条件下返回错误的结果?就目前情况而言,这不会重新生成。@PraveenKumar完整版本可以工作。我尝试了很多不同的组合,包括
$l
$max
$min
,但无法让它们返回不同的结果。这不适用于这两个版本吗?我理解d严格相等的不同。但我看不出这是什么时候的问题。伙计,你找到了解决方案!我不知道为什么,但完整版本在没有双等号的情况下也能工作;速记版本没有。我真的不明白这是怎么解决的。你能为函数提供示例输入,在其中它起作用吗?那不是吗不适用于两个版本?我理解严格相等的区别。但我看不出这是什么问题。伙计,你已经找到了解决方案!我不知道为什么,但完整版本也可以在没有双等号的情况下工作;简写版本不可以。我真的不明白这是如何解决的。你能为函数提供示例输入吗它在哪里起作用?+通过浓缩逻辑的好的选择。+通过浓缩逻辑的好的选择。