Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:从多维数组创建面包屑_Php_Multidimensional Array_Breadcrumbs - Fatal编程技术网

PHP:从多维数组创建面包屑

PHP:从多维数组创建面包屑,php,multidimensional-array,breadcrumbs,Php,Multidimensional Array,Breadcrumbs,我有一个多维数组,如下所示: $sidebar_booking = array( 'booking' => array( 'levels' => array('1'), 'title' => 'Booking', 'icon' => 'fa-calendar', 'sub' => array( 'rates-availability' => 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' => '/ctrl/booking/overview/',
                    ),
                    'booking-setup' => array(
                        'levels' => array('1'),
                        'title' => 'Setup Camere / Tariffe',
                        'url' => '/ctrl/booking/setup/',
                    ),
                    'booking-prices' => array(
                        'levels' => array('1'),
                        'title' => 'Modifica Prezzi',
                        'url' => '/ctrl/booking/prices/',
                    ),
                    'booking-availability' => array(
                        'levels' => array('1'),
                        'title' => 'Modifica Disponibilità',
                        'url' => '/ctrl/booking/availability/',
                    ),
                    'booking-openclose' => array(
                        'levels' => array('1'),
                        'title' => 'Apri / Chiudi Camere',
                        'url' => '/ctrl/booking/openclose/',
                    ),
                    'booking-restrictions' => array(
                        'levels' => array('1'),
                        'title' => 'Restrizioni',
                        'url' => '/ctrl/booking/restrictions/',
                    ),
                    'booking-rates' => array(
                        'levels' => array('1'),
                        'title' => 'Tariffe',
                    ),
                ),
            ),
            'booking-promo' => array(
                'levels' => array('1'),
                'title' => 'Promozioni',
                'url' => '/ctrl/booking/promo/',
            ),
            'booking-reservations' => array(
                'levels' => array('1'),
                'title' => 'Prenotazioni',
                'url' => '/ctrl/booking/reservations/',
            ),
        )
    ),
);
我用它来创建我的(嵌套的)侧栏菜单

现在,给定一个与上面示例中的
url
之一匹配的字符串,我想使用
title
s构建面包屑

例如,给定字符串
/ctrl/booking/prices/
,我想得到以下列表(然后我可以使用CSS转换为面包屑):

  • 预订
  • 有争议的财产
  • (您可以看到我在数组中返回,查找标题;请注意,最后一项链接到
    url

    我真的被卡住了,这是我的技能问题:-(
    提前谢谢!

    你可以这样试试

    function getTitle(Array $arr, $find) {
        if (isset($arr['url']) && $arr['url'] == $find) {
             return $arr['title'];
        }
        if (isset($arr['sub'])) {
            return $arr['title'] . '/' . getTitle( $arr['sub'], $find);
        }
        return false;
    }
    
    echo getTitle($menu, $url);
    
    编辑版本

    function getTitle(Array $arr, $find) {
        foreach($arr as $val){
            if (isset($val['url']) && $val['url'] == $find) {
                return '<li><a href="' . $val['url'] . '">' . $val['title'] . '</a></li>';
            }
            if (isset($val['sub'])) {
                return '<li>' . $val['title'] . '</li>' . getTitle( $val['sub'], $find);
            }
        }
        return false;
    };
    
    函数getTitle(数组$arr,$find){ 外汇($arr作为$val){ 如果(isset($val['url'])&&$val['url']==$find){ 返回“
  • ”; } 如果(isset($val['sub'])){ 返回“
  • ”。$val['title'].
  • ”.getTitle($val['sub'],$find); } } 返回false; };
    您要查找的基本上是多维数组的数组搜索功能。本主题介绍了一些选项:这几乎可以,我在回答中编辑了:-),但这里出现了一个我没有说明的问题:可以有许多嵌套的[sub],这使事情复杂化。。。