Despite PHP's amazing assortment of array functions and juggling maneuvers, I found myself needing a way to get the FULL array key mapping to a specific value. This function does that, and returns an array of the appropriate keys to get to said (first) value occurrence.function array_recursive_search_key_map($needle, $haystack) { foreach($haystack as $first_level_key=>$value) { if ($needle === $value) { return array($first_level_key); } elseif (is_array($value)) { $callback = array_recursive_search_key_map($needle, $value); if ($callback) { return array_merge(array($first_level_key), $callback); } } } return false;}usage example:-------------------$nested_array = $sample_array = array( 'a' => array( 'one' => array ('aaa' => 'apple', 'bbb' => 'berry', 'ccc' => 'cantalope'), 'two' => array ('ddd' => 'dog', 'eee' => 'elephant', 'fff' => 'fox') ), 'b' => array( 'three' => array ('ggg' => 'glad', 'hhh' => 'happy', 'iii' => 'insane'), 'four' => array ('jjj' => 'jim', 'kkk' => 'kim', 'lll' => 'liam') ), 'c' => array( 'five' => array ('mmm' => 'mow', 'nnn' => 'no', 'ooo' => 'ohh'), 'six' => array ('ppp' => 'pidgeon', 'qqq' => 'quail', 'rrr' => 'rooster') ));$search_value = 'insane';$array_keymap = array_recursive_search_key_map($search_value, $nested_array);var_dump($array_keymap);// Outputs:// array(3) {// [0]=>// string(1) "b"// [1]=>// string(5) "three"// [2]=>// string(3) "iii"//}----------------------------------------------But again, with the above solution, PHP again falls short on how to dynamically access a specific element's value within the nested array. For that, I wrote a 2nd function to pull the value that was mapped above.function array_get_nested_value($keymap, $array){ $nest_depth = sizeof($keymap); $value = $array; for ($i = 0; $i < $nest_depth; $i++) { $value = $value[$keymap[$i]]; } return $value;}usage example:-------------------echo array_get_nested_value($array_keymap, $nested_array); // insane