ZetCode

PHP array_search 函数

最后修改于 2025 年 3 月 13 日

PHP 的 array_search 函数会搜索一个数组以查找给定值。如果找到该值,它将返回第一个匹配的键。这对于定位数组中的元素非常有用。

基本定义

array_search 函数在数组中搜索一个值。如果找到元素,它返回该元素的键;如果未找到,则返回 false。字符串搜索是区分大小写的。

语法:array_search(mixed $needle, array $haystack, bool $strict = false): mixed。strict 参数启用类型比较。失败时返回 false。

基本的 array_search 示例

这演示了在简单的索引数组中搜索值。

basic_array_search.php
<?php

$fruits = ["apple", "banana", "cherry", "date"];
$key = array_search("cherry", $fruits);

if ($key !== false) {
    echo "Found at index: $key"; 
} else {
    echo "Not found";
}

这会在 fruits 数组中搜索“cherry”。函数返回 2,即“cherry”的索引。注意严格 (!==) 比较以区别于 0。

关联数组搜索

在关联数组中搜索会返回相应的键。

assoc_array_search.php
<?php

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

$key = array_search("john@example.com", $user);

if ($key !== false) {
    echo "Email field: $key"; 
} else {
    echo "Not found";
}

这会在关联数组中查找 email 值。函数返回“email”,即找到该值的位置键。适用于任何数组类型。

严格类型比较

使用严格模式可确保在搜索过程中值和类型都匹配。

strict_search.php
<?php

$values = ["10", 10, 20, 30];
$key = array_search(10, $values, true);

if ($key !== false) {
    echo "Found at index: $key"; 
} else {
    echo "Not found";
}

在严格模式下,字符串“10”与整数 10 不匹配。函数返回 1,即整数 10 所在的位置。在严格模式下,类型很重要。

搜索 False 值

搜索 false、0 或空字符串时需要特别注意。

false_search.php
<?php

$data = [true, false, 0, ""];
$key = array_search(false, $data);

if ($key !== false) {
    echo "Found at index: $key"; 
} else {
    echo "Not found";
}

这会在索引 1 处找到 false 值。始终使用严格比较 (!==) 来区分在索引 0 处找到和未找到 (false) 的情况。

搜索多维数组

对于多维数组,将 array_search 与 array_column 结合使用。

multi_array_search.php
<?php

$users = [
    ["id" => 1, "name" => "Alice"],
    ["id" => 2, "name" => "Bob"],
    ["id" => 3, "name" => "Charlie"]
];

$key = array_search("Bob", array_column($users, "name"));

if ($key !== false) {
    echo "Found at index: $key"; 
} else {
    echo "Not found";
}

这会在二维数组的 name 列中搜索“Bob”。array_column 提取 name 值,然后 array_search 查找索引。适用于类似数据库的数据。

最佳实践

来源

PHP array_search 文档

本教程涵盖了 PHP 的 array_search 函数,并提供了实际示例,展示了其在各种数组搜索场景中的用法。

作者

我叫 Jan Bodnar,我是一名充满激情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 PHP 数组函数