一招鮮吃遍天,自從看了燕十八關于PHP變量內部機制的那課,解釋了一些很久的疑惑,知其然還知其所以然,果然是學習的最佳途徑,比背下來要重要N倍。
我們知道一個變量有變量表的位置,然后他指向自己的內存地址,
<?php //$a='';//YES you variable $a YES $a is empty //$a=NULL;//YES you variable $a YES $a is empty //$a=0;//YES you variable $a YES $a is empty if(isset($a)) echo 'YES you variable $a<br>'; else echo 'sorry you do not have variable $a<br>';if(empty($a)) echo 'YES $a is empty'; else echo 'sorry $a is full'; ?>
通過上面這個實驗我總結出一個結論。
isset()檢查的是變量的內存地址,只有這個變量沒有他對應的內存,isset就返回false,什么時候變量沒有對應的內存地址,第一.變量根本就沒有設置,第二.變量的值為NULL。
empty 檢查的是變量對應內存的內容,而只要這個內容轉換為boolean,只要是轉換后是false,他就返回true,所以‘’,0,null包括沒有設置的變量都會被認為是空。
如此理解腎好,比死記硬背不知道要高到哪里去了。