Php 如果没有',则使用速记;不行。为什么?
我想缩短以下if语句: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 {
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严格相等的不同。但我看不出这是什么时候的问题。伙计,你找到了解决方案!我不知道为什么,但完整版本在没有双等号的情况下也能工作;速记版本没有。我真的不明白这是怎么解决的。你能为函数提供示例输入,在其中它起作用吗?那不是吗不适用于两个版本?我理解严格相等的区别。但我看不出这是什么问题。伙计,你已经找到了解决方案!我不知道为什么,但完整版本也可以在没有双等号的情况下工作;简写版本不可以。我真的不明白这是如何解决的。你能为函数提供示例输入吗它在哪里起作用?+通过浓缩逻辑的好的选择。+通过浓缩逻辑的好的选择。