PHP Conference Japan 2024

array_key_exists

(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)

array_key_exists檢查指定的鍵名或索引是否存在於陣列中

說明

array_key_exists(字串|整數|浮點數|布林值|資源|null $key, 陣列 $array): 布林值

array_key_exists() 函式會在指定的 key 存在於陣列中時回傳 truekey 可以是任何可能的陣列索引值。

參數

key

要檢查的值。

array

要檢查其鍵值的陣列。

回傳值

成功時回傳 true,失敗時回傳 false

注意事項:

array_key_exists() 只會搜尋第一層的鍵值。多維陣列中的巢狀鍵值將不會被找到。

更新日誌

版本 說明
8.0.0 key 參數現在接受 boolfloatintnullresourcestring 作為引數。

範例

範例 #1 array_key_exists() 範例

<?php
$search_array
= array('first' => 1, 'second' => 4);
if (
array_key_exists('first', $search_array)) {
echo
"陣列中存在 'first' 元素";
}
?>

範例 #2 array_key_exists() vs isset()

當陣列鍵值對應到 null 值時,isset() 不會回傳 true,而 array_key_exists() 則會。

<?php
$search_array
= array('first' => null, 'second' => 4);

// 回傳 false
isset($search_array['first']);

// 回傳 true
array_key_exists('first', $search_array);
?>

備註

注意事項:

基於向下相容性的考量,如果 key 是在作為 array 提供的 物件 中定義的屬性,array_key_exists() 也會回傳 true。此行為自 PHP 7.4.0 起已被棄用,並自 PHP 8.0.0 起移除。

要檢查物件中是否存在某個屬性,應該使用 property_exists()

參見

新增筆記

使用者貢獻的筆記 2 則筆記

Julian
1 年前
當您想要檢查多個陣列鍵值時

<?php

$array
= [];
$array['a'] = '';
$array['b'] = '';
$array['c'] = '';
$array['d'] = '';
$array['e'] = '';

// 所有給定的鍵值 a, b, c 都存在於提供的陣列中
var_dump(array_keys_exists(['a','b','c'], $array)); // bool(true)

function array_keys_exists(array $keys, array $array): bool
{
$diff = array_diff_key(array_flip($keys), $array);
return
count($diff) === 0;
}
Rumour
1 年前
在 PHP7+ 中,要查找值是否設定在具有固定維數的多維陣列中,只需使用 Null 合併運算子:??

因此,對於一個您不確定任何鍵值實際存在的三維陣列

<?php

// 取代以下寫法:
$exists = array_key_exists($key1, $arr) && array_key_exists($key2, $arr[$key1]) && array_key_exists($key3, $arr[$key1][$key2]) ;

// 使用:
$exists = array_key_exists($key3, $arr[$key1][$key2]??[]) ;

?>
To Top