2013-11-24 81 views
1

我見過很多類似的問題,但沒有任何可以幫助解釋我的問題。 我有一個名爲城市的數組,具有該州的城市的嵌套數組。它看起來像這樣:回聲嵌套數組與PHP foresh PHP

$cities = array(
    "ca" => array(
     "los-angeles" => "Los Angeles" 
    ), 
    "wa" => array(
     "bellingham" => "Bellingham", 
     "seattle" => "Seattle", 
     "tacoma" => "Tacoma" 
    ) 
); 

我的PHP代碼顯示了許多HTML select領域:

<?php 
foreach ($cities as $state) { 
    echo "<select name='city' id='" . $state . "'>"; 
    foreach ($state as $city => $name) { 
     echo "<option value='" . $city . "'>" . $name . "</option>"; 
    } 
} 
?> 

selectid總是Array。我如何使用密鑰,如「ca」或「wa」?

回答

1

問題是你應該使用數組鍵來選擇狀態。這是我對你的代碼的修改。請注意,我明確指定state_keystate_value以及city_keycity_value。明確地命名事物有助於調試。我還添加了一個關閉</select>元素,以便內容正確呈現。

foreach ($cities as $state_key => $state_value) { 

    echo "<select name='city' id='" . $state_key . "'>"; 
    foreach ($state_value as $city_key => $city_value) { 
     echo "<option value='" . $city_key . "'>" . $city_value . "</option>"; 
    } 
    echo "</select>"; 

} 
+1

謝謝!關於顯式名稱的提示我將確保更頻繁地使用!我現在明白'state-key'是如何被發現的。哦,我確實關閉了'select'標籤,但我忘了將它添加到這個問題中, –

0

嘗試uisng echo "<select name='city' id='" . $state['los-angeles'] . "'>";代替echo "<select name='city' id='" . $state . "'>";

如果你想ca爲您的選擇元素ID,然後在下面的一個使用,

foreach ($cities as $key=>$state) { 
    echo "<select name='city' id='" . $key . "'>"; 
    foreach ($state as $city => $name) { 
     echo "<option value='" . $city . "'>" . $name . "</option>"; 
    } 
} 

如果你想要一個像los-angeles爲您選擇元素的ID,然後在下面用一個

foreach ($cities as $key=>$state) {  
    $SelectId = strtolower(str_replace(" ",'-',$state['los-angeles'])); 
    echo "<select name='city' id='" . $SelectId . "'>"; 
    foreach ($state as $city => $name) { 
     echo "<option value='" . $city . "'>" . $name . "</option>"; 
    } 
    } 
0

這是因爲第一個foreach循環遍歷數組數組。所以每個成員將成爲一個數組。如果你有id ='" . $state[0],你會看到該數組的第一個成員。

var_dump功能是你的朋友。

您可以使用array_keys函數獲取所有城市。

0
foreach ($cities as $key=>$state) { 
    echo "<select name='city' id='" . $key . "'>"; 
    foreach ($state as $city => $name) { 
     echo "<option value='" . $city . "'>" . $name . "</option>"; 
    } 
} 

改變你的情況$狀態這

是包含城市的數組。所以它始終顯示爲Array()的值。