PHP多维数组:检索给定键的值

时间:2015-09-24 11:08:15

标签: php multidimensional-array

我有一个像这样的多维数组:

$sidebar_booking = array(
    'booking' => array(
        'levels' => array('1'),
        'title' => 'Booking',
        'icon' => 'fa-calendar',
        'sub' => array(
            'rates-availability' => array(
                'levels' => array('1'),
                'title' => 'Tariffe e Disponibilità',
                'sub' => array(
                    'booking-overview' => array(
                        'levels' => array('1'),
                        'title' => 'Panoramica',
                        'url' => home('/ctrl/booking/overview/'),
                    ),
                    'booking-setup' => array(
                        'levels' => array('1'),
                        'title' => 'Setup Camere / Tariffe',
                        'url' => home('/ctrl/booking/setup/'),
                    ),
                    'booking-prices' => array(
                        'levels' => array('1'),
                        'title' => 'Modifica Prezzi',
                        'url' => home('/ctrl/booking/prices/'),
                    ),
                    'booking-availability' => array(
                        'levels' => array('1'),
                        'title' => 'Modifica Prezzi',
                        'url' => home('/ctrl/booking/prices/'),
                    ),
                    'booking-openclose' => array(
                        'levels' => array('1'),
                        'title' => 'Apri / Chiudi Camere',
                        'url' => home('/ctrl/booking/openclose/'),
                    ),
                    'booking-restrictions' => array(
                        'levels' => array('1'),
                        'title' => 'Restrizioni',
                        'url' => home('/ctrl/booking/restrictions/'),
                    ),
                    'booking-rates' => array(
                        'levels' => array('1'),
                        'title' => 'Tariffe',
                    ),
                ),
            ),
            'booking-promo' => array(
                'levels' => array('1'),
                'title' => 'Promozioni',
                'url' => home('/ctrl/booking/promo/'),
            ),
            'booking-reservations' => array(
                'levels' => array('1'),
                'title' => 'Prenotazioni',
                'url' => home('/ctrl/booking/reservations/'),
            ),
        )
    ),
);

我可以使用递归函数搜索特定键的存在:

function array_key_exists_r($needle, $haystack){
    $result = array_key_exists($needle, $haystack);
    if ($result) return $result;
    foreach ($haystack as $v) {
        if (is_array($v)) {
            $result = array_key_exists_r($needle, $v);
        }
        if ($result) return $result;
    }
    return $result;
};

到目前为止一切顺利 现在,一旦找到特定密钥,如何检索?即,功能如:

retrieve_value_of('booking-setup', $sidebar_booking);

应该返回数组:

array(
    'levels' => array('1'),
    'title' => 'Setup Camere / Tariffe',
    'url' => home('/ctrl/booking/setup/'),
)

提前致谢

1 个答案:

答案 0 :(得分:1)

我更新了你的功能,它给出了预期的输出。请试试如下。

if __name__ == '__main__':