Monday, November 18, 2024
Google search engine
HomeLanguagesPHP multidimensional array search by value

PHP multidimensional array search by value

In PHP, multidimensional array search refers to searching a value in a multilevel nested array. There are various techniques to carry out this type of search, such as iterating over nested arrays, recursive approaches and inbuilt array search functions.

Iterative Approach:
Iterating over the array and searching for significant match is the simplest approach one can follow. Check if an element of the given array is itself an array or not and add the element to the search path, else run array search on the nested array.

Example:




<?php
// PHP program to carry out multidimensional array search
  
  
// Function to iteratively search for a given value
function searchForId($search_value, $array, $id_path) {
  
    // Iterating over main array
    foreach ($array as $key1 => $val1) {
  
        $temp_path = $id_path;
          
        // Adding current key to search path
        array_push($temp_path, $key1);
  
        // Check if this value is an array
        // with atleast one element
        if(is_array($val1) and count($val1)) {
  
            // Iterating over the nested array
            foreach ($val1 as $key2 => $val2) {
  
                if($val2 == $search_value) {
                          
                    // Adding current key to search path
                    array_push($temp_path, $key2);
                          
                    return join(" --> ", $temp_path);
                }
            }
        }
          
        elseif($val1 == $search_value) {
            return join(" --> ", $temp_path);
        }
    }
      
    return null;
}
  
// Multidimensional array 
$gfg_array = array(
    array(
        'score' => '100',
        'name' => 'Sam',
        'subject' => 'Data Structures'
    ),
    array(
        'score' => '50',
        'name' => 'Tanya',
        'subject' => 'Advanced Algorithms'
    ),
    array(
        'score' => '75',
        'name' => 'Jack',
        'subject' => 'Distributed Computing'
    )
);
  
$search_path = searchForId('Advanced Algorithms',
                    $gfg_array, array('$'));
  
print($search_path);
  
?>


Output:

$ --> 1 --> subject

Recursive Approach:
In case, when levels of nested arrays increase, it becomes hard to write such programs and debug them. In such cases its better to write a recursive program which can cleanly be written without adding any nested for loops.

Example:




<?php
// PHP program to carry out multidimensional array search
  
  
// Function to recursively search for a given value
function array_search_id($search_value, $array, $id_path) {
      
    if(is_array($array) && count($array) > 0) {
          
        foreach($array as $key => $value) {
  
            $temp_path = $id_path;
              
            // Adding current key to search path
            array_push($temp_path, $key);
  
            // Check if this value is an array
            // with atleast one element
            if(is_array($value) && count($value) > 0) {
                $res_path = array_search_id(
                        $search_value, $value, $temp_path);
  
                if ($res_path != null) {
                    return $res_path;
                }
            }
            else if($value == $search_value) {
                return join(" --> ", $temp_path);
            }
        }
    }
      
    return null;
}
  
// Multidimensional (Three dimensional) array
$gfg_array = array(
    "school1" => array(
        "year" => "2017",
        "data" => array(
            'score' => '100',
            'name' => 'Sam',
            'subject' => 'Data Structures'
        )
    ),
      
    "school2" => array(
        "year" => "2018",
        "data" => array(
            'score' => '50',
            'name' => 'Tanya',
            'subject' => 'Advanced Algorithms'
        )
    ),
      
    "school3" => array(
        "year" => "2018",
        "data" => array(
            'score' => '75',
            'name' => 'Jack',
            'subject' => 'Distributed Computing'
        )
    )
);
  
$search_path = array_search_id('Jack', $gfg_array, array('$'));
print($search_path);
  
?>


Output:

$ --> school3 --> data --> name

Multidimensional array search using array_search() method:
The array_search() is an inbuilt function which searches for a given value related to the given array column/key. This function only returns the key index instead of a search path. The array_column() function returns the values from a single column in the input array.

Example:




<?php
// PHP program to carry out multidimensional array search
  
  
// Multidimensional array
$gfg_array = array(
    array(
        'score'   => '100',
        'name'    => 'Sam',
        'subject' => 'Data Structures'
    ),
    array(
        'score'   => '50',
        'name'    => 'Tanya',
        'subject' => 'Advanced Algorithms'
    ),
    array(
        'score'   => '75',
        'name'    => 'Jack',
        'subject' => 'Distributed Computing'
    )
);
  
$id = array_search('50', array_column($gfg_array, 'score'));
echo $id;
  
?>


Output:

1

PHP is a server-side scripting language designed specifically for web development. You can learn PHP from the ground up by following this PHP Tutorial and PHP Examples.

RELATED ARTICLES

Most Popular

Recent Comments