PHP 多维数组:检索给定键的值 [英] PHP multidimensional array: retrieve the value given a key

查看:64
本文介绍了PHP 多维数组:检索给定键的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a multidimensional array like this:

$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/'),
            ),
        )
    ),
);

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

I can search the existence of a specific key with a recursive function:

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

到目前为止一切顺利.
现在,一旦找到特定键,我如何检索 value ?即,像这样的函数:

So far so good.
Now, how can I retrieve the value once I found a specific key? I.e., a function like:

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

应该返回数组:

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

提前致谢

推荐答案

我更新了你的函数,它给出了预期的输出.请按以下方式尝试.

I updated your function and it is giving expected output. Please give a try as following.

function array_key_exists_r($needle, $haystack){
    $result = array_key_exists($needle, $haystack);
    if ($result) 
    {
        foreach ($haystack as $a=>$v) 
        {
            if($needle == $a)
                return $haystack[$a];
            if (is_array($v)) {
                $result = array_key_exists_r($needle, $v);
            }
            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;
};

这篇关于PHP 多维数组:检索给定键的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆