Home >Backend Development >PHP Tutorial >How to Efficiently Find a Key in a PHP Multidimensional Array by its Value?

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

Patricia Arquette
Patricia ArquetteOriginal
2024-12-09 20:59:15557browse

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

PHP Multidimensional Array Searching (Find Key by Value)

In this scenario, you have a multidimensional array representing a collection of products. Each product is defined by properties such as name, slug, price, etc. Your goal is to find a way to search the array for a specific product using the slug property and return its corresponding key in the array.

One way to achieve this is by leveraging the array_search function and the array_column function. Here's a custom function that encapsulates this approach:

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

To use this function, you would call it like so:

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

This will search the $products array for a product with the slug property equal to 'breville-one-touch-tea-maker-BTM800XL' and return its corresponding key. In this example, it will return the value 1.

Another possible solution is based on the array_search function. For this approach, you need to use PHP 5.5.0 or higher:

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

This code achieves the same result as the previous example.

There is also a third method using array_walk_recursive that recursively goes through all the elements of the array and compares the value of the slug with the given 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;
        }
    }
}

This function can be invoked as follows:

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

It's important to note that while the array_walk_recursive method is more general and can handle any type of array structure, it is generally slower than the other methods.

Overall, the best method to use will depend on the specific needs and constraints of your application. However, the two most efficient methods are the ones that utilize the array_search and array_column functions.

The above is the detailed content of How to Efficiently Find a Key in a PHP Multidimensional Array by its Value?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn