2017-10-17 44 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