2012-12-28 54 views
0

我想縮短以下if語句:速記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); 
    } 
} 

謝謝

+1

是完整版的工作? Coz短版是正確的。 –

+0

嘗試轉儲$ l,$ min和$ max。 – Zaffy

+0

「不起作用」是什麼意思?崩潰?在特定條件下返回錯誤結果?就目前而言,這不會重演。 – djechlin

回答

3

的語法是好的。問題可能與運行時的值$max有關。 0是虛假的,所以你將它與整數零比較,應該是($max !== 0)

+0

這不適用於兩個版本嗎? – Barmar

+0

我明白嚴格平等的區別。但是我沒有看到這是什麼問題。 –

+0

你找到解決方案的人! 我不知道爲什麼,但完整版的作品也沒有雙等號;速記版沒有。 – Floppy88

1

你也只能用邏輯運算符寫:

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

+通過凝聚邏輯的好選擇。 –

相關問題