PHP multidimensional array search by value
Last Updated :
17 Dec, 2021
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
function searchForId( $search_value , $array , $id_path ) {
foreach ( $array as $key1 => $val1 ) {
$temp_path = $id_path ;
array_push ( $temp_path , $key1 );
if ( is_array ( $val1 ) and count ( $val1 )) {
foreach ( $val1 as $key2 => $val2 ) {
if ( $val2 == $search_value ) {
array_push ( $temp_path , $key2 );
return join( " --> " , $temp_path );
}
}
}
elseif ( $val1 == $search_value ) {
return join( " --> " , $temp_path );
}
}
return null;
}
$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
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 ;
array_push ( $temp_path , $key );
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;
}
$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
$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 ;
?>
|
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.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...