PHP 中數組函數isset 效率比array_key_exists 更高
isset
和array_key_exists
函數都可以用來測試數組中變量是否存在:
if(isset($array[$i])){ echo "存在"; }
if(array_key_exists($i, $array)) { echo "存在"; }
那麼這兩個函數有什麼區別呢?經過測試:
- 當數組個數為10時,兩者差異就體現出來了,
isset
速度要快近10倍,但不是很明顯,而且對於變量是否存在,兩者之間的差異沒有太大,當變量存在時運行更快,但是這種趨勢在是非常微弱的。 - 使用
array_key_exists
隨著循環的次數增加,程序運行的時間增加量是成幾何級數增加的,當一個數組元素個數超過1000時運行速度就非常慢了。
所以isset
和array_key_exists
在對判斷一個數組函數中某個元素是否存在,isset
速度要更快,而且這種速度差異是非常大的。
由於isset
屬於php中的語言結構,而array_key_exists
是函數,所以isset
更快。並且isset
在其他語言中也存在,更具可讀性。
另外對於變量值的判斷,當變量為NULL時,isset
返回的結果是false,而array_key_exists
只判斷變量是否存在。所以如果判斷一個數組中的某個元素,並且判斷其是否是否為真,應該用isset
。