php中有兩個(gè)常見的異常, Undefined index和Undefined variable, 今天我們就來了解它們的區(qū)別和異常解決方案.
php函數(shù)中值傳遞的方式
在php中對于簡單數(shù)據(jù)類型, 也就是number, boolean, string, 它們作為函數(shù)參數(shù)傳值時(shí), 默認(rèn)是使用值傳遞
Undefined variable異常的原因
Undefined variable異常就是說變量未定義, 當(dāng)我們引用一個(gè)未定義的變量時(shí)就會報(bào)該異常.
Undefined variable異常的解決方法
解決方法就是在引用該變量之前使用isset函數(shù)進(jìn)行判斷, 下面是該函數(shù)的封裝
<?phpfunction getSafeValue(&$var,$default=null){ return isset($var) ? $var : $default;}
上面函數(shù)有一個(gè)點(diǎn)要注意, 就是必須使用引用傳遞, 也就是&$var, 因?yàn)橥ㄟ^值傳遞會復(fù)制一次變量, 假如該變量本身就不存在, 則又會報(bào)Undefined variable異常.
Undefined index異常的原因
Undefined index異常: 當(dāng)我們使用了數(shù)組中不存在的key時(shí), 就會報(bào)該異常.
Undefined index異常的解決方案
其實(shí)和Undefined variable解決方案差不多, 也是在引用前進(jìn)行一次判斷, 下面時(shí)該函數(shù)的封裝.
<?phpfunction getSafeArrValue(&$arr,$key,$default=null){ return isset($arr[$key]) ? $arr[$key] : $default;}
引申閱讀
php中函數(shù)參數(shù)的引用傳遞和值傳遞
php中isset, empty, is_null的區(qū)別
文章首發(fā)于: https://hedaoshe.com/311.html