2012-03-06 96 views
2

我正在動態地嘗試填充多維數組並遇到一些麻煩。如何將元素添加到循環中的數組使用php

我有一個美國各州的列表。在我的循環中,像這樣的$ states [nc],$ states [sc]等關聯數組我想將城市追加到每個狀態,所以$ states [nc] [cities]包含一組城市。我堅持邏輯。

foreach($states as $state) { 
    $data[$state] = $state; 

    foreach($cities as $city) { 
     $data[$state]['cities'] .= $city; 
    } 
} 

我知道串聯是不正確的,但我不知道如何添加元素到這個數組。我不斷收到與array_push錯誤。

添加這些元素的正確方法是什麼?

+1

用$ data替換內部foreach [$ state] ['cities'] = $ cities;應該做的伎倆。 – mwhite 2012-03-06 10:43:18

回答

14

用同樣的方法添加到一個數組時,關鍵是不是一個問題:

$data[$state]['cities'][] = $city; 
+0

做到了!我試圖把它過度複雜化,但是這給了我正確的結果。謝謝! – user658182 2012-03-06 10:52:45

1
foreach($states as $state) { 
    $data[$state] = $state; 

    foreach($state->cities as $city) { 
     $data[$state][] = $city; 
    } 
} 

使用空方括號將一個元素添加到陣列。

2

要添加元素,請使用空括號。

foreach($states as $state) { 
    foreach($cities as $city) { 
     $data[$state][] = $city; 
    } 
} 

這將創建一個這樣

array(
    'nc' => array('city1', 'city2', ...), 
    'sc' => array('city1', 'city2', ...) 
) 

數組見manual「創建/用方括號的語法修改」

8

在PHP下,你可以填寫一個數組,而不參照實際指數。

$newArray = array(); 
foreach($var in $oldArray){ 
$newArray[] = $var; 
} 
+0

簡單得多的語法:$ newArray = array_values($ oldArray); – DarkSide 2013-03-08 00:44:21

相關問題