首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 判斷陣列是否存在指定鍵:array_key_exists() vs isset()

     編輯:PHP 綜合知識

PHP 有兩個函數檢查鍵是否存在:array_key_exists() 與 isset()。關鍵差異在於對 null 值的處理。

語法對照

函數語法鍵存在且值為 null鍵不存在
array_key_exists()array_key_exists(mixed $key, array $array)truefalse
isset()isset($array[$key])falsefalse

實測範例

<?php
$array = ["Zero"=>"PHP", "One"=>"Perl", "Two"=>"Java", "Three"=>null];

var_dump(array_key_exists("One", $array));  // true
var_dump(array_key_exists("1", $array));    // false (字串 "1" !== 整數 1)
var_dump(isset($array["Two"]));             // true
var_dump(isset($array[2]));                 // false (整數 2 !== 字串 "Two")
var_dump(array_key_exists("Three", $array)); // true
var_dump(isset($array["Three"]));           // false (值為 null)
?>

效能與選擇建議

  • isset() 語言結構,速度較快,適合高頻呼叫
  • 需確認鍵存在即使值為 null 時,必須用 array_key_exists()
  • PHP 7+ array_key_exists() 已大幅優化,差距縮小

最佳實踐模式

// 僅檢查鍵存在
if (isset($arr[$key]) || array_key_exists($key, $arr)) { ... }

// 取值並提供預設(PHP 7+)
$val = $arr[$key] ?? 'default';

陣列物件化存取

若陣列轉為物件 (object)$arr,只能用 property_exists() 或 isset($obj->key)。

理解兩者差異,避免 null 值導致的邏輯錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved