PHP数组子数组和array_keys混淆

时间:2013-12-26 22:22:44

标签: php arrays

我有一个$ menus数组,其中包含$ submenu数组,然后包含$ sub_submenu数组。

结构是这样的:

(
    [0] => Menu 0
        [0] => Sub Menu 0 of Menu 0
            [0] => Sub Sub Menu 0 of Sub Menu 0 of Menu 0
            [1] => Sub Sub Menu 1 of Sub Menu 0 of Menu 0
        [1] => Sub Menu 1 of Menu 0
            [0] => Sub Sub Menu 0 of Sub Menu 1 of Menu 0
            [1] => Sub Sub Menu 1 of Sub Menu 1 of Menu 0
    [1] => Menu 1
        [0] => Sub Menu 0 of Menu 1
            [0] => Sub Sub Menu 0 of Sub Menu 0 of Menu 1
            [1] => Sub Sub Menu 1 of Sub Menu 0 of Menu 1
        [1] => Sub Menu 1 of Menu 1
            [0] => Sub Sub Menu 0 of Sub Menu 1 of Menu 1
            [1] => Sub Sub Menu 1 of Sub Menu 1 of Menu 1
)

如果我试试这个:

echo $menus[$menu[1]][$submenu[0]][1];

我明白了:

Sub Sub Menu 1 of Sub Menu 0 of Menu 1

这就是我的期望。

我现在正在尝试创建一个包含sub_sub_menu KEYS值的数组,我想我可以这样做:

$sub_sub_menu = array_keys($menus[$menu[1]][$submenu[0]]);

但我得到一个空数组:

echo '<pre>';print_r($sub_sub_menu); echo '</pre>';

返回:

    Array
(
    [0] => 0
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 4
    [5] => 5
    [6] => 6
    [7] => 7
    [8] => 8
    [9] => 9
)

我做错了什么?

1 个答案:

答案 0 :(得分:0)

你声明你“从array_keys()函数

获取一个空数组:”

但你显示的结果是:

   Array
(
    [0] => 0
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 4
    [5] => 5
    [6] => 6
    [7] => 7
    [8] => 8
    [9] => 9
)

不是一个空数组,而是使用数字索引数组的键填充(这是我们在非关联数组上运行array_keys时可能会遇到的情况)。

如果您在程序中创建了一个实际数组的转储,这样会很好,这样我们就可以更好地了解它的真实含义。

如果您让我们知道您计划使用键组(例如,是否向用户显示菜单项?),这也可能会有所帮助。