php true false isset empty is_null array()

weixin_34402408發表於2017-11-26

php裡面的true和false,以及isset、empty、is_null比較容易讓人模糊,寫一下,記錄我的理解。

switch(true){
case 1: 
echo '我是1';
case ['']: 
echo '我是陣列';
case true:
echo '我是true';
case 'true': 
echo :'string true';
default: 
echo ' over' ;
}  

程式碼執行結果會是 全都被輸出。

php變數和bool型別的資料做比較的時候,將會被轉換成true 或者false

那麼0、false、null或者unset之後的變數將會被系統認為是false。
除此之外都將會被認為是true。
注意 以上程式碼中:[''],其實是建立一個匿名陣列,和bool進行比較的時候,將會被系統認為是true。

false在網頁中是不被列印的。

isset()

判斷變數是否已經被定義以及判斷該變數是否被設定(也就是賦值)。
當變數不存在或者是當變數被賦值為null,或者壓根沒有被賦值的情況下,返回false。
其餘情況返回true,當然外部無法訪問類內部private修飾的變數。
''、0、false、array()也被認為是已經設定。

empty()
判斷變數是否為空。
0、false、null、array()、unset()、''、沒有初始化這些情況下,empty函式都將返回true也就是1。
其餘情況返回false。

也就是 只要該變數等於false,empty就將返回true。

is_null()

判斷變數是否是空。
只有在變數未初始化就使用以及初始化為null以及變數根本不存在的情況下,才會返回true。

總結

php遵循c語言的變數儲存規則。
如果我們認為php是一個只有true和false的世界:

  1. 0->false
  2. false->false
  3. ''->false
  4. array()->false
  5. null->false
  6. unset()->false
  7. 變數未初始化就呼叫->false
  8. 1->true
  9. 其餘情況->true

empty認為一切是false的玩意,都是空,都會給呼叫者返回true。
is_null認為未初始化的變數,不存在的變數,值為null的變數 都是true。
isset認為當變數不存在或者是當變數被賦值為null,或者壓根沒有被賦值,以及被unset之後的變數,屬於未被設定的範疇,將返回0,false。

相關文章