Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.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 json对象_Php_Json - Fatal编程技术网

PHP json对象

PHP json对象,php,json,Php,Json,这是我的json文件: $json='{ "mainmenu": [ { "title": "Main Menu 1", "url": "some url" }, { "title": "Main Menu 2", "url": "some url2" } ], "submenu": { "my submenu 1": [ { "title":

这是我的json文件:

$json='{
    "mainmenu": [
    {
        "title": "Main Menu 1",
        "url": "some url"
    },
    {
        "title": "Main Menu 2",
        "url": "some url2"
    }
    ],
    "submenu": {
    "my submenu 1": [
    {
        "title": "Sub menu title",
        "url": "some url"
    },
    {
        "title": "Sub menu title",
        "url": "some url"
    }
    ],
    "another submenu":[
    {
        "title": "Sub menu title",
        "url": "some url"
    },
    {
        "title": "Sub menu title",
        "url": "some url"
    },
    {
        "title": "Sub menu title",
        "url": "some url"
    }
    ]
}
}';
我可以通过以下内容找到主菜单的编号:

<?php
$data = json_decode($json);
echo sizeof($data->mainmenu);

使用
foreach
迭代
$data
数组(使用
var\u dump()
查看完整结构)。

试试这个

$arr = json_decode($json);
$arr2 = $arr->submenu;

$total_submenu = 0;
foreach($arr2 as $key=>$val)
{
    $total_submenu += sizeof($val);
}

echo $total_submenu; // ouput 5 according to your json

这将为您提供子菜单对象的计数:

echo count((array)$data->submenu)); 
循环浏览
子菜单
数组的索引:

foreach(array_keys((array)$data->submenu) as $obj) {
    // $obj will be the name of each submenu
}
我更喜欢

$count = count(json_decode($json, true));

解码JSON后,就有了简单的多维数组。只需打印/var\u转储它,看看它是什么样子。然后构建一个循环来检查你想要的任何东西。@user1995781你试过我的吗anwer@SatishSharma我试过你的答案。你的答案是最好的!!非常感谢您的帮助。:)非常感谢你的回答。现在,如何获取子菜单信息?如果直接引用,则为
$data->submenu->submenu1[0]->标题。如何动态地进行?我尝试了
$data->submenu[“submenu1”][0][“title”]
,但没有成功。