如何循环遍历json数组以将其转换为单个值并列出它们?

时间:2016-01-19 07:33:18

标签: php json foreach

我已经为网页中显示的菜单提取了json输出。 我想将其转换为菜单和子菜单。我试过循环但它不起作用。请提前帮助我,谢谢。

$output = json_encode(array($menu_main_row['menu_name'] => $sub_menu));

Json输出:

{"Home":"[{\"Create\":\"create.php\"},{\"Edit\":\"edit.php\"}]"}
{"Projects":"[{\"My Projects\":\"myprojects.php\"},{\"My reports\":\"reports.php\"}]"}

这是我使用的foreach循环。

foreach($value as $main_menu_name=>$arr_val_sub)
{
    echo "<ul>";
    echo $main_menu_name;
    $val=json_decode($arr_val_sub);
    foreach ($val as $menu_name=>$menu_url)
    {
        echo $menu_name;
        echo "<br>";
        echo $menu_url;
    }
}

主菜单名称是打印,但是当我打印子菜单名称和URL时,它打印为0 1.

1 个答案:

答案 0 :(得分:1)

你错过了另一个挖掘json的步骤。 $menu_url是要解析的另一个json。下面的代码修复了它

foreach($value as $main_menu_name=>$arr_val_sub)
{
    echo "<ul>";
    echo $main_menu_name;
    $val=json_decode($arr_val_sub);

    foreach ($val as $menu_name=>$menu_url)
    {
        $submenu=new RecursiveArrayIterator($menu_url);

        foreach ($submenu as $submenu_name=>$submenu_url)
        {
          echo $submenu_name;
          echo "<br>";
          echo $submenu_url;
          echo "<br>";
        }
    }
}