PHP array_find_key 函数
最后修改于 2025 年 3 月 13 日
PHP 的 array_find_key 函数使用回调函数在数组中搜索键。它返回回调函数返回 true 的第一个键。
基本定义
array_find_key 函数搜索数组中满足条件的某个值。如果找到,则返回相应的键。
语法:array_find_key(array $array, callable $callback): mixed。回调测试每个值。如果找不到匹配项,则返回 null。
基本的 array_find_key 示例
此示例查找数组中第一个偶数的键。
basic_array_find_key.php
<?php
declare(strict_types=1);
function array_find_key(array $array, callable $callback): mixed {
foreach ($array as $key => $value) {
if ($callback($value)) {
return $key;
}
}
return null;
}
$numbers = [1, 3, 4, 7, 8];
$firstEvenKey = array_find_key($numbers, fn($n): bool => $n % 2 === 0);
echo "First even at key: " . $firstEvenKey;
回调检查偶数。它在找到值为 4 的地方返回键 2。搜索在第一个匹配项处停止。
查找字符串键
搜索值与特定字符串模式匹配的键。
string_search.php
<?php
declare(strict_types=1);
$users = [
'john' => 'admin',
'jane' => 'editor',
'bob' => 'viewer',
'alice' => 'editor'
];
$editorKey = array_find_key($users, fn($role): bool => $role === 'editor');
echo "First editor: " . $editorKey;
这会找到第一个角色为“editor”的用户。回调比较每个值,并返回“jane”作为第一个匹配的键。
对象属性搜索
查找对象属性满足特定条件的键。
object_search.php
<?php
declare(strict_types=1);
class Product {
public function __construct(
public string $name,
public float $price
) {}
}
$products = [
'p1' => new Product("Laptop", 999.99),
'p2' => new Product("Phone", 699.99),
'p3' => new Product("Tablet", 399.99)
];
$affordableKey = array_find_key($products,
fn(Product $p): bool => $p->price < 700);
echo "First affordable: " . $affordableKey;
这会找到价格低于 700 美元的第一件商品。回调检查 price 属性,并返回“p2”(Phone)作为第一个匹配项。
无匹配场景
当没有元素满足回调条件时,函数返回 null。
no_match.php
<?php declare(strict_types=1); $colors = ['red', 'green', 'blue']; $result = array_find_key($colors, fn($c): bool => $c === 'yellow'); var_dump($result);
由于数组中没有“yellow”,因此函数返回 null。这有助于区分找到值为 null 的键和找不到匹配项。
提前终止
array_find_key 在找到第一个匹配项时停止,这样很高效。
early_termination.php
<?php
declare(strict_types=1);
$data = [10, 20, 30, 40, 50];
$key = array_find_key($data, function($n): bool {
echo "Checking $n\n";
return $n > 25;
});
echo "Found at key: " . $key;
该函数在找到 30 后停止检查。您只会看到 10、20 和 30 的输出,这展示了短路行为。
最佳实践
- 特定回调: 使回调条件精确。
- 类型安全: 使用类型提示进行可靠的比较。
- 性能: 在大型数组中将最可能匹配的项放在前面。
- Null 检查: 始终处理 null 返回值。
来源
PHP Array Search 文档(相关功能)
本教程涵盖了 PHP array_find_key 模式,并通过实际示例展示了其在数组搜索场景中的用法。
作者
列出 所有 PHP 数组函数。