php程式設計基本功之isset與empty

餘二五發表於2017-11-14

最常用的兩個函式,許多來應聘的有多年程式設計經驗的老鳥都搞不清楚,見下面的例子:


  1. $arr[] = 
  2. $arr[] = 0; 
  3. $arr[] = NULL; 
  4. $arr[] = null; 
  5. $arr[] = `0`
  6. $arr[] = ` `
  7.  
  8. echo “isset empty
  9. echo “——————————-
  10. foreach ($arr as $key => $val
  11.     echo isset($val) ? `true``false`
  12.     echo ” “
  13.     echo empty($val) ? `true``false`
  14.     echo 

輸出:


  1. isset   empty 
  2. ——————————- 
  3. true    true 
  4. true    true 
  5. false   true 
  6. false   true 
  7. true    true 
  8. true    false 

當我們在表單輸入時,經常遇到的一個問題,尤其是在做配置的時候,當填入0時,代表的是值是0,但不填值表示的可能是該值未定義。對於這種情況可以用下面的函式來做判斷:


  1. /** 
  2.  * 判斷值是否為空 
  3.  * 
  4.  * 在php中,0,null,array()和“用empty函式判斷時都會返回true, 但實際上很多情況下0是不應當被認為是空 
  5.  * 的。比如在設定引數值時,0可能表示值真的是0,而空字串則可能表示該值未設定 
  6.  * 
  7.  * @author ustb80 
  8.  * @param mixed $value 變數值 
  9.  * @param boolean $is_trim 是否要去掉前後空格 
  10.  * @return boolean 
  11.  */ 
  12. function isEmpty($value$is_trim = false) 
  13.     return $value === null || $value === array() || $value ===  || ($is_trim && is_scalar($value) && trim($value) === ); 
  14.  
  15. echo isEmpty(0) ? `1`:`0`
  16. echo isEmpty(`0`) ? `1`:`0`

輸出:


  1. 00

可以看到輸入0已不再被認為是空了,不論其是字元還是數字。

本文轉自 ustb80 51CTO部落格,原文連結:http://blog.51cto.com/ustb80/1047128,如需轉載請自行聯絡原作者


相關文章