Get a specific value from a multidimensional array

I have a large multidimensional array. And I have to find a specific sub-array from it.
I tried using a single recursion function, but did not actually return a value. Can anyone give me another solution.
Here is a preview of the array.

Array ( [0] => Array ( [expanded] => 1 [key] => _1 [title] => New ) [1] => Array ( [key] => _2 [title] => Home ) [2] => Array ( [expanded] => 1 [key] => _3 [title] => Care [children] => Array ( [0] => Array ( [expanded] => 1 [key] => _4 [title] => face [children] => Array ( [0] => Array ( [key] => _5 [title] => new ) [1] => Array ( [key] => _6 [title] => <strong>face timeline</strong> [data] => Array ( [url] => http://localhost/patient/face-timeline/ [type] => content [cid] => 2291 [timeline] => 0 ) [children] => Array ( [0] => Array ( [key] => _2278 [title] => Post Op Visit ) [1] => Array ( [key] => _2277 [title] => Surgery ) [2] => Array ( [key] => _2276 [title] => Pre-Op ) [3] => Array ( [key] => _2275 [title] => Consultation ) [4] => Array ( [key] => _2274 [title] => Reseach ) ) ) ) ) ) ) ) 

From this array I want this array (below):

 Array ( [key] => _6 [title] => <strong>face timeline</strong> [data] => Array ( [url] => http://localhost/patient/face-timeline/ [type] => content [cid] => 2291 [timeline] => 0 ) [children] => Array ( [0] => Array ( [key] => _2278 [title] => Post Op Visit ) [1] => Array ( [key] => _2277 [title] => Surgery ) [2] => Array ( [key] => _2276 [title] => Pre-Op ) [3] => Array ( [key] => _2275 [title] => Consultation ) [4] => Array ( [key] => _2274 [title] => Reseach ) ) ) 

Here is what I tried

 function recursion($array,$postid) { foreach ($array as $key=>$value) { if((isset($value['data']['cid'])) && ($value['data']['cid'] == $postid)){ $tmp = $value; return $value; } if (is_array($value)) { recursion($value,$postid); } } } 

This function does not return a value.
Here $postid is 2291 . This is what I am looking for, and I can print this array, but cannot return the value. Here is the link

+6
source share
2 answers

If you want to get only a specific value, use this:

  function recursive($your_array) { $newArray = []; foreach ($your_array as $key => $val) { if (array_keys($your_array) == 'children') { foreach($val as $key2 => $val3){ $newArray[] = recursive($val3); } } } print_r($newArray); } 
+1
source

This will give you the result:

 $searchedData = searchCustomRecursive('2291',$userdb); function searchCustomRecursive($searchString, $array, $previousArray= Array()){ if(is_Array($array)){ $newArray = recursive_array_search($searchString,$array); if(is_Array($newArray)){ searchCustomRecursive($searchString, $newArray,$array); }else{ print_r($previousArray); // Check your result here... return $previousArray; } } } function recursive_array_search($needle,$haystack) { foreach($haystack as $key=>$value) { $current_key=$key; if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) { return $value; } } return false; } 
0
source

All Articles