首页 >后端开发 >php教程 >如何根据值高效地查找 PHP 多维数组中的键?

如何根据值高效地查找 PHP 多维数组中的键?

Patricia Arquette
Patricia Arquette原创
2024-12-09 20:59:15556浏览

How to Efficiently Find a Key in a PHP Multidimensional Array by its Value?

PHP 多维数组搜索(按值查找键)

在此场景中,您有一个代表产品集合的多维数组。每个产品都由名称、slug、价格等属性定义。您的目标是找到一种方法,使用 slug 属性在数组中搜索特定产品,并返回数组中对应的键。

实现此目的的一种方法是利用 array_search 函数和 array_column 函数。这是封装此方法的自定义函数:

function array_search_multidim(array $array, string $column, string $key)
{
    return array_search($key, array_column($array, $column));
}

要使用此函数,您可以像这样调用它:

$product_key = array_search_multidim($products, 'slug', 'breville-one-touch-tea-maker-BTM800XL');

这将在 $products 数组中搜索产品slug 属性等于 'breville-one-touch-tea-maker-BTM800XL' 并返回其相应的密钥。在此示例中,它将返回值 1。

另一种可能的解决方案是基于 array_search 函数。对于这种方法,您需要使用 PHP 5.5.0 或更高版本:

$key = array_search('breville-one-touch-tea-maker-BTM800XL', array_column($products, 'slug'));

此代码实现与前面的示例相同的结果。

还有第三种方法使用 array_walk_recursive递归地遍历数组的所有元素并将 slug 的值与给定的值进行比较value:

function array_walk_recursive_search($input, $needle, &$result = null)
{
    if (is_array($input)) {
        foreach ($input as $key => $value) {
            array_walk_recursive_search($value, $needle, $result);
        }
    } else {
        if ($input === $needle) {
            $result = $key;
        }
    }
}

可以按如下方式调用该函数:

array_walk_recursive($products, 'breville-one-touch-tea-maker-BTM800XL', $product_key);

需要注意的是,虽然 array_walk_recursive 方法更通用,可以处理任何类型的数组结构,但它通常比其他方法慢。

总体而言,最佳使用方法取决于应用程序的具体需求和限制。然而,两种最有效的方法是利用 array_search 和 array_column 函数。

以上是如何根据值高效地查找 PHP 多维数组中的键?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn