2016-05-10 43 views
1

我有一個foreach循環插入數據到多維數組。如何在創建多維數組時設置頂層變量?

foreach ($charts_list as $chart_list) { 
     $category = $chart_list->category; 
     if (isset($chart_options[$category])) { 
     $chart_options[$category][] = $chart_list; 
     } else { 
     $chart_options[$category] = array($chart_list); 
     } 
    } 

我得到一個數組是這樣的:

array:2 [▼ 
    "twitter" => array:3 [▼ 
    0 => {#271 ▼ 
     +"id": 1 
     +"option_id": "DJ8RhoB" 
     +"title": "Followers Growth" 
     +"description": "See your followers growth" 
     +"category": "twitter" 
     +"created_at": "2016-05-09 10:44:54" 
     +"updated_at": "2016-05-09 10:44:54" 
    } 
    1 => {#272 ▼ 
     +"id": 2 
     +"option_id": "tqP3Bri" 
     +"title": "Friends growth" 
     +"description": "See your friends growth" 
     +"category": "twitter" 
     +"created_at": "2016-05-09 10:45:24" 
     +"updated_at": "2016-05-09 10:45:24" 
    } 
    2 => {#273 ▼ 
     +"id": 3 
     +"option_id": "v74DudJ" 
     +"title": "Statuses count" 
     +"description": "See your content growth" 
     +"category": "twitter" 
     +"created_at": "2016-05-09 10:45:46" 
     +"updated_at": "2016-05-09 10:45:46" 
    } 
    ] 
    "facebook" => array:1 [▼ 
    0 => {#274 ▼ 
     +"id": 4 
     +"option_id": "fXj8wU5" 
     +"title": "Friends growth" 
     +"description": "See your friends growth" 
     +"category": "facebook" 
     +"created_at": "2016-05-09 13:08:21" 
     +"updated_at": "2016-05-09 13:08:21" 
    } 
    ] 
] 

在頂層數組,我需要將其設置爲'category' => $category這應該打印"category": twitter。我試着將$chart_options[$category]設置爲$chart_options['category' => $category. But I get a parse error解析錯誤:語法錯誤,意外'=>'(T_DOUBLE_ARROW),期待']'`。我將如何將頂級數組設置爲一個類別?

+0

你在哪條線上得到這個錯誤?你能否更新預期的數組格式? –

+0

我將'else'語句更改爲'$ chart_options ['category'=> $ category] ​​= array($ chart_list);'嘗試設置變量。那是我得到錯誤的地方。 – kevinabraham

+0

它應該是'$ chart_options ['category'] [$ category] ​​= array($ chart_list);' –

回答

1

它看起來像你其實只是想訪問數組中的鍵以及值。

PHP的foreach允許您通過指定一個額外的參數來訪問,而不是典型的一個數組的鍵,:

foreach ($array as $value) 

你可以這樣做:

foreach ($array as $key => $value) 

我希望這有助於。

+0

謝謝@MattPrelude。幫助我出去了很多! – kevinabraham

0

這不是很清楚,但我想你想的:

$chart_options['category'] = $category; 
+0

對不起,如果不清楚。基本上而不是數組打印'「twitter」=> array:3'我需要它爲頂層的每個記錄打印'「category」:「twitter」=> array:3'。 – kevinabraham

0

可能是你需要嘗試

$chart_options['category'][$category][] = $category;

+0

請嘗試使用數組的jsonencode –

+0

嘗試在類別內部創建更多嵌套數組。我的問題是,而不是'array:2 [▼ 「twitter」=> array:3 [▼'是數組中的一個元素。我需要將它引用到某些內容中,以便我可以在視圖中調用它。類似於「類別」:「twitter」=> array:3' – kevinabraham

+0

$ chart_options [$ category] ​​[] = $ category;然後jasonencode($ chart_options) –

0

中的其他部分添加元素category

代碼

$chart_options[$category] = array($chart_list); 

更換後,它會看起來像下面

$chart_options['category'][$category] = array($chart_list); 
       ^

的完整代碼

foreach ($charts_list as $chart_list) { 
    $category = $chart_list->category; 
    if (isset($chart_options[$category])) { 
    $chart_options[$category][] = $chart_list; 
    } else { 
    $chart_options['category'][$category] = array($chart_list); 
    } 
}