ZetCode

PHP array_key_exists 函数

最后修改于 2025 年 3 月 13 日

PHP 的 array_key_exists 函数用于检查指定的键是否存在于数组中。它是安全数组访问和验证的关键。

基本定义

array_key_exists 函数验证一个键是否存在于数组中。如果键存在,它返回 true,否则返回 false。

语法:array_key_exists(string|int $key, array $array): bool。该函数可用于任何类型的数组中的字符串和整数键。

基本的 array_key_exists 示例

本示例演示了如何在简单的关联数组中检查键。

basic_array_key_exists.php
<?php

$user = [
    'name' => 'John',
    'age' => 30,
    'email' => 'john@example.com'
];

if (array_key_exists('email', $user)) {
    echo "Email exists: {$user['email']}";
} else {
    echo "Email not found";
}

这会检查 'email' 键是否存在于 $user 数组中。由于它存在,代码会输出电子邮件地址。始终在访问之前验证键。

检查数字键

该函数同样适用于数字数组索引。

numeric_keys.php
<?php

$colors = ['red', 'green', 'blue'];

if (array_key_exists(1, $colors)) {
    echo "Second color is: {$colors[1]}"; 
}

if (!array_key_exists(3, $colors)) {
    echo "Index 3 doesn't exist";
}

这会验证顺序数组中的数字索引。请注意,PHP 数组是零索引的,因此索引 1 指的是第二个元素。

与 isset() 的区别

array_key_exists 在处理 null 值方面与 isset 不同。

isset_comparison.php
<?php

$data = [
    'name' => 'Alice',
    'age' => null
];

var_dump(array_key_exists('age', $data)); // bool(true)
var_dump(isset($data['age']));           // bool(false)

array_key_exists 对于 null 值返回 true,而 isset 返回 false。根据您是否需要检测 null 作为有效值来选择。

多维数组

该函数可以检查嵌套数组结构中的键。

multi_dimensional.php
<?php

$inventory = [
    'fruits' => [
        'apple' => 10,
        'banana' => 15
    ],
    'vegetables' => [
        'carrot' => 20
    ]
];

if (array_key_exists('fruits', $inventory) && 
    array_key_exists('banana', $inventory['fruits'])) {
    echo "Banana count: {$inventory['fruits']['banana']}";
}

这会检查多个级别的键。先验证父键是否存在,然后检查嵌套键,以避免未定义的索引错误。

性能注意事项

该函数对于哈希表查找具有恒定的时间复杂度 (O(1))。

performance.php
<?php

$largeArray = array_fill(0, 1000000, 'value');

$start = microtime(true);
array_key_exists(999999, $largeArray);
$time = microtime(true) - $start;

echo "Key check took: " . number_format($time * 1000, 3) . " ms";

即使有百万个元素,键查找仍然很快。该函数使用 PHP 的内部哈希表实现进行高效搜索。

最佳实践

来源

PHP array_key_exists 文档

本教程通过实际示例介绍了 PHP array_key_exists 函数及其在数组键验证方面的用法。

作者

我叫 Jan Bodnar,我是一名热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。至今,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 PHP 数组函数