多维PHP数组-密钥存在

问题描述 投票:0回答:1

我想要一个函数,该函数将基于给定键是否在PHP的多维数组中而返回TRUE或FALSE。

我无法找出递归函数来执行此操作。

此功能的示例:

$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
php arrays multidimensional-array key exists
1个回答
3
投票

这是递归函数派上用场的地方。

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;
}

请注意,这可能会花费一些时间(在长嵌套数组中,最好先展平,因为您只对键是否存在感兴趣。

© www.soinside.com 2019 - 2024. All rights reserved.