Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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中的Foreach和2D数组_Php_Foreach_2d - Fatal编程技术网

PHP中的Foreach和2D数组

PHP中的Foreach和2D数组,php,foreach,2d,Php,Foreach,2d,这是一个菜单,1表示主要部分,2表示子菜单。比如: 家 地图 -马帕 -MapB 孔塔 布拉 我知道如何使用foreach,但据我所知,它用于一维数组。在上面的示例中,我必须做什么?您需要为每个项目嵌套两个foreach,但是,您的数据结构中没有任何内容可以轻松指示什么是子项。地图与地图?我想一个人可以弄明白,但是你必须为你的脚本编写大量的样板文件来排序。。考虑重构你的数据,使它更接近你想要达到的目标。 这里有一个例子。不过,您可能会想出一个更好的系统: $mainMenu['Home'][

这是一个菜单,1表示主要部分,2表示子菜单。比如:

家 地图 -马帕 -MapB 孔塔 布拉


我知道如何使用foreach,但据我所知,它用于一维数组。在上面的示例中,我必须做什么?

您需要为每个项目嵌套两个foreach,但是,您的数据结构中没有任何内容可以轻松指示什么是子项。地图与地图?我想一个人可以弄明白,但是你必须为你的脚本编写大量的样板文件来排序。。考虑重构你的数据,使它更接近你想要达到的目标。

这里有一个例子。不过,您可能会想出一个更好的系统:

$mainMenu['Home'][1] = '/mult/index.php';
$mainMenu['Map'][1] = '/mult/kar.php';
$mainMenu['MapA'][2] = '/mult/kara.php';
$mainMenu['MapB'][2] = '/mult/karb.php';
$mainMenu['Contact'][1] = '/mult/sni.php';
$mainMenu['Bla'][1] = '/mult/vid.php';

您将需要嵌套两个foreach,但是,您的数据结构中没有任何内容可以轻松指示什么是子项。地图与地图?我想一个人可以弄明白,但是你必须为你的脚本编写大量的样板文件来排序。。考虑重构你的数据,使它更接近你想要达到的目标。

这里有一个例子。不过,您可能会想出一个更好的系统:

$mainMenu['Home'][1] = '/mult/index.php';
$mainMenu['Map'][1] = '/mult/kar.php';
$mainMenu['MapA'][2] = '/mult/kara.php';
$mainMenu['MapB'][2] = '/mult/karb.php';
$mainMenu['Contact'][1] = '/mult/sni.php';
$mainMenu['Bla'][1] = '/mult/vid.php';

你为每一个陈述筑巢;像这样的东西应该能起作用

$mainMenu = array(
    'Home' => '/mult/index.php',
    'Map' => array(
        '/mult/kar.php',
        array(
            'MapA' => '/mult/kara.php',
            'MapB' => '/mult/karb.php'
        )
     ),
     'Contact' => '/mult/sni.php',
     ...
);

你为每一个陈述筑巢;像这样的东西应该能起作用

$mainMenu = array(
    'Home' => '/mult/index.php',
    'Map' => array(
        '/mult/kar.php',
        array(
            'MapA' => '/mult/kara.php',
            'MapB' => '/mult/karb.php'
        )
     ),
     'Contact' => '/mult/sni.php',
     ...
);

Foreach可以很容易地用于多维数组,就像使用for循环一样

无论如何,您的方法有点不合适,这里有一个更好但仍然不是很好的解决方案:

foreach($mainMenu as $key=>$val){
    foreach($val as $k=>$v){
       if($k == 2){
         echo '-' . $key;
       }else{
          echo $key;
       }
    }
}

这就是说,这只做1级子菜单。无论哪种方式,它都会帮助你了解这个想法

Foreach可以很容易地用于多维数组,就像使用for循环一样

无论如何,您的方法有点不合适,这里有一个更好但仍然不是很好的解决方案:

foreach($mainMenu as $key=>$val){
    foreach($val as $k=>$v){
       if($k == 2){
         echo '-' . $key;
       }else{
          echo $key;
       }
    }
}

这就是说,这只做1级子菜单。无论哪种方式,它都会帮助你了解这个想法

您的数据结构没有正确定义。设置$mainMenu['MapA'][1]时会发生什么情况?最好使用这样的数组$mainMenup[]=array Home,/mult/index.php,1您的数据结构没有正确定义。设置$mainMenu['MapA'][1]时会发生什么情况?最好使用这样的数组$mainMenup[]=array Home,/mult/index.php,1$mainMenu['Map']应该附加[1]或一些合适的键,否则您只需跺脚值。$mainMenu['Map']应该附加[1]或一些合适的键,否则您只需跺脚值。