大家好
之前偶然遇到一個錯誤
因為我很常用 isset 來判斷是否有設定參數,但是之前發現在某種情況之下,isset 即使該KEY在陣列中有存在,也會判斷FALSE。
 
原本我一直以為 isset 可以替代 array_key_exists 來做判斷,但是要注意官方對於 isset 的說明是
 
" isset — Determine if a variable is set and is not NULL "
 
所以即使值是 空白false,也會true,但是如果是 null 或是未宣告,都是 false
這點要特別注意
 
 
$yy = "";
$tt = array('QQ'=>$yy);
echo isset($tt['QQ']) ? 'Y':'N';//true

$yy = false;
$tt = array('QQ'=>$yy);
echo isset($tt['QQ']) ? 'Y':'N';//true

$yy = null;
$tt = array('QQ'=>$yy);
echo isset($tt['QQ']) ? 'Y':'N';//false



 
其實重點是在於,當你不明白為什麼isset是false 時,你用 print_r 是看不出來差別的,這點需要特別注意。
 
給大家參考!感恩!