我有非常廣泛地使用的代碼,從另一個方法中獲取數組,並且有時返回該數組的第一個元素。鑑於null
是一個可接受的函數返回值,是否值得在數組索引上調用isset()
的性能開銷(或檢查數組長度等),還是更好地返回不存在的索引(拋開警告)。除阻止警告外,呼叫isset()
還有什麼好處。調用isset()與返回未定義索引
下面的例子被簡化了,真正的功能不是只是得到數組的第一個元素。
function get_array_element(){
$array = get_array(); // function that returns array
return $array[0]; // return index 0 which may not exist
}
對戰,如果索引設置檢查:
可能不存在回報指數該函數內部
function get_array_element(){
$array = get_array(); // function that returns array
return (isset($array[0]))? // check if index 0 isset() else return null
$array[0] :
null;
}
我認爲一個頁面不應該有任何警告或錯誤。我認爲它有助於執行良好的編程規範(看到警告的未來開發人員如何知道這種行爲是有意的而不是忘記邊緣案例?)但是我也沒有看到需要使用'isset()'在數組的一個元素上。相反,我會檢查'$ array'的count()來查看是否至少有一個元素。 –
@StephenBooher在我的強迫症同意,但因爲這被稱爲(幾十)幾千次,我想知道這張支票是否值得性能明智,尤其是考慮到它通常包含一個值。 – doublesharp
好吧,那麼'E_NOTICE'的開銷要少於調用'isset()'函數或吞嚥錯誤的開銷。該功能很可能會花費更多。我一直使用'isset()'認爲這是最佳實踐,但效率可能不高。 – NappingRabbit