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
Release: 2024-12-09 20:59:15
Original
562 people have browsed it

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));
}
Copy after login

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

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

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'));
Copy after login

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;
        }
    }
}
Copy after login

This function can be invoked as follows:

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

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!

source:php.cn
Statement of this Website
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
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template