Skip to content
Advertisement

Multidimensional PHP array – Key exists

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.

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement