I want a function that will return TRUE or FALSE based on if a given key exists in a multidimensional array in PHP.
I haven’t been able to figure out a recursive function to perform this action.
A sample of what this could do:
$array = array( 'key 1' => array( 'key 1.1' => array() 'key 1.2' => array() ), 'key 2' => array( 'key 2.1' => array( 'key 2.1.1' => array() ) 'key 2.2' => array() ) ); multi_array_key_exists('key 1', $array); // return TRUE multi_array_key_exists('key 2.1.1', $array); // return TRUE multi_array_key_exists('key 3', $array); // return FALSE
Advertisement
Answer
This is where a recursive function comes in handy.
function multi_array_key_exists($key, array $array): bool { if (array_key_exists($key, $array)) { return true; } else { foreach ($array as $nested) { if (is_array($nested) && multi_array_key_exists($key, $nested)) return true; } } return false; }
Note that this can take some time (in long nested arrays), it might be better to flatten first, since you are only interested in whether the key exists or not.