How to Search by key=value in a Multidimensional Array in PHP


PHP (Hypertext Preprocessor): PHP (Hypertext Preprocessor) is a widely-used open-source server-side scripting language that is specifically designed for web development. It was originally created by Rasmus Lerdorf in 1994 and has since evolved into a powerful language used by millions of developers worldwide.

PHP is primarily used to develop dynamic web pages and web applications. It allows developers to embed PHP code within HTML, making it easy to mix server-side logic with the presentation layer. PHP scripts are executed on the server, and the resulting HTML is sent to the client's browser.

In PHP, there are several ways to search for a specific key-value pair in a multidimensional array.

Here are three commonly used approaches:

  • Using a foreach loop

  • Using array_filter() and array_column()

  • Using array_search() with array_column()

Using a foreach loop

Here's an example of using a foreach loop to search for a key-value pair in a multidimensional array in PHP:

<?php
$searchKey = 'key';
$searchValue = 'value';
$foundElement = null;
foreach ($array as $subarray) {
   if (isset($subarray[$searchKey]) && $subarray[$searchKey] === $searchValue) {
      $foundElement = $subarray;
         break;
   }
}
if ($foundElement !== null) {
   // Key-value pair found
   // Do something with $foundElement or the matching element
} else {
   // Key-value pair not found
   // Handle the case when the pair is not found
}
?>

In this example, the foreach loop iterates over each subarray in the multidimensional array. It checks if the desired key exists in the subarray using isset(), and if the value of that key matches the search value. If a match is found, the $foundElement variable is assigned the subarray and the loop is terminated using break.

After the loop, you can check if $foundElement is not null to determine if the key-value pair was found. If it is not null, you can perform operations with $foundElement or the matching element. If it remains null, you can handle the case when the pair is not found according to your requirements.

Using array_filter() and array_column()

Here's an example of using array_filter() and array_column() to search for a key-value pair in a multidimensional array in PHP:

$searchKey = 'key';
$searchValue = 'value';
$result = array_filter($array, function ($subarray) use ($searchKey, $searchValue) {
    return isset($subarray[$searchKey]) && $subarray[$searchKey] === $searchValue;
});
if (!empty($result)) {
    // Key-value pair found
    // Do something with $result or the matching element(s)
} else {
    // Key-value pair not found
    // Handle the case when the pair is not found
}

In this example, array_filter() is used to filter the $array based on a callback function. The callback function checks if each subarray has the desired key and if its corresponding value matches the search value. If the conditions are met, the subarray is included in the filtered result.

After filtering, you can check if the $ result array is not empty to determine if the key-value pair was found. If it is not empty, you can perform operations with $result or the matching element(s). If it is empty, you can handle the case when the pair is not found according to your requirements.

Using array_search() with array_column()

Here's an example of using array_search() with array_column() to search for a key-value pair in a multidimensional array in PHP:

<?php
searchKey = 'key';
$searchValue = 'value';
$key = array_search($searchValue, array_column($array, $searchKey));
if ($key !== false) {
    // Key-value pair found
    // Do something with $array[$key] or the matching element
} else {
    // Key-value pair not found
    // Handle the case when the pair is not found
}
 
?>

In this example, array_column() is used to extract a single column of values based on the search key from the multidimensional array $array. The resulting array contains the values of the specified key from each subarray.

Then, array_search() is used to find the position of the desired value within the extracted column. If the key-value pair is found, array_search() returns the corresponding key/index of the matching element. If the pair is not found, array_search() returns false.

You can check if the returned $key is not equal to false to determine if the key-value pair was found. If it is not false, you can perform operations with $array[$key] or the matching element. If it is false, you can handle the case when the pair is not found according to your requirements.

Conclusion

Each approach has its advantages and may be more suitable depending on your specific use case. You can choose the one that fits your requirements and the structure of your multidimensional array.

Updated on: 01-Aug-2023

3K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements