2017-10-17 28 views
1

我有一个json文件,我试图将信息包含到Mysql数据库表中。 JSON文件:Json获取内容使用2 foreach在PHP中检索多个节点深度

"categories": [{ 
      "id": "cat0101000", 
      "name": "TVs", 
      "url": "https://www.url.com/site/", 
      "path": [ 
       { 
        "name": "Home", 
        "id": "cat00000" 
       }, 
       { 
        "name": "TV & Home Theater", 
        "id": "cat0100000" 
       }, 
       { 
        "name": "TVs", 
        "id": "cat0101000" 
       } 
      ], 

的代码,包括每个注册表:

public function handle() 
{ 
    $json = file_get_contents('resources/json/categories_0001.json'); 
    $data = json_decode($json); 
    $array1 = (array)$data; 
    foreach ($array1['categories'] as $obj) { 
     DB::table('categories')->insert(array(
      'categoryId' => ((isset($obj->id) ? $obj->id : 1)), 
      'categoryName' => ((isset($obj->name) ? $obj->name : null)), 
      'parentId' => end($obj->path)->id, 
      'URL' => ((isset($obj->url) ? $obj->url : 1)), 
     )); 
    } 
} 

我的想法是,包括里面的所有记录“路径”连接所有领域。例如:

'path'=>。 “$ obj-> path-> id”。 “\”。 “$ obj-> path-> id”。 “\”。 “$ obj-> path-> id”

我试过在foreach内foreach但没有成功。任何帮助赞赏。

回答

1

你改变了反对阵列并试图获得像物体改变这种

$array1 = (array)$data; 
    foreach ($array1['categories'] as $obj) { 

foreach ($data->categories as $obj) { 
+0

我的问题是,即时通讯使用DB ::表( '类') - >插入(数组(并且我找不到在该语句中包含foreach的方法( - > insert) –

+1

您可以先创建数组,然后放入insert – C2486