PHP中空字元串介紹0、null、empty和false之間的關系
作者: 字型:[
增加 減小] 類型:轉載 時間:2012-09-25
用PHP開發那麼久,PHP中空字元串、0、null、empty和false之間的關系總是有些不确定的東西。遇到它們應該用哪個方法函數去處理
如果用錯方法函數或是用少了,如果幾個方法函數的邏輯順序錯了,很可能就是一個漏洞,而且不容易找出來。糾結啊~
上網找找看哪位高人有總結出相關的結論出來,果然有!不過似乎不是很全面,我在這裡稍完善了一下,僅供參考。
複制代碼代碼如下:
// 判斷 0 與 ''、null、empty、false 之間的關系
$a = 0;
echo "0 與 ''、 empty、null、false 之間的關系:";
if($a == ''){
echo "0 == '';";
}else{
echo "0 != '';";
}
if(trim($a) == ''){
echo "trim(0) == '';";
echo "trim(0) != '';";
if(strval($a) == ''){
echo "strval(0) == '';";
echo "strval(0) != '';";
if($a === ''){
echo "0 === '';";
echo "0 !=== '';";
if(empty($a)){
echo "0 is empty;";
echo "0 is not empty;";
if(is_null($a)){
echo "0 is null;";
echo "0 is not null;";
if(is_numeric($a)){
echo "0 is numeric;";
echo "0 is not numeric;";
if(is_string($a)){
echo "0 is string;";
echo "0 is not string;";
if(!$a){
echo "0 is false;";
echo "0 is not false;";
// 判斷 '' 和 0、null、empty、false 之間的關系
$a = '';
echo "'' 和 0、empty、null、false 之間的關系:";
if($a == 0){
echo "'' == 0;";
echo "'' != 0;";
if(intval($a) == 0){
echo "intval('') == 0;";
echo "intval('') != 0;";
echo "'' is empty;";
echo "'' is not empty;";
echo "'' is null;";
echo "'' is not null;";
echo "'' is numeric;";
echo "'' is not numeric;";
echo "'' is string;";
echo "'' is not string;";
echo "'' is false;";
echo "'' is not false;";
// 判斷 null 和 ''、0、empty、false 之間的關系
$a = null;
echo "null 和 ''、0、empty、false 之間的關系:";
echo "null == '';";
echo "null != '';";
echo "null == 0;";
echo "null != 0;";
echo "null === '';";
echo "null !=== '';";
if($a === 0){
echo "null === 0;";
echo "null !=== 0;";
echo "strval(null) == '';";
echo "strval(null) != '';";
echo "intval(null) == 0;";
echo "intval(null) != 0;";
echo "null is empty;";
echo "null is not empty;";
echo "null is numeric;";
echo "null is not numeric;";
echo "null is string;";
echo "null is not string;";
echo "null is false;";
echo "null is not false;";
echo "";
輸出的結果是:

我想根據輸出結果都可以清楚了解決空字元串、0、null、empty和false之間的大概關系,在開發過程中靈活運用上述代碼裡的方法,加上良好的邏輯,基本上應該是不會出現問題的了。