2012-12-31 36 views
0

我有一個表單,帶有多個選擇下拉列表。我用一個數字命名每一個。以數字作爲索引的PHP關聯數組

問題
當我這樣做了,結果我就可以得到所選擇的值foreach循環,但我拿到鑰匙?他們從0開始,而不是1,因爲他們應該。

HTML:

<select name="1"> 
    <option value="1">Admin</option> 
    <option value="2">Moderator</option> 
    <option value="3" selected="selected">User</option> 
    <option value="4">More</option> 
</select> 

<select name="2"> 
    <option value="1" selected="selected">Admin</option> 
    <option value="2">Moderator</option> 
    <option value="3">User</option> 
    <option value="4">More</option> 
</select> 

<select name="3"> 
    <option value="1" selected="selected">Admin</option> 
    <option value="2">Moderator</option> 
    <option value="3">User</option> 
    <option value="4">More</option> 
</select> 

形式提交(的var_dump):

array(4) { 
    [0]=> 
    string(1) "3" 
    [1]=> 
    string(1) "1" 
    [2]=> 
    string(1) "1" 
} 

PHP

$arr = $form_array; 
foreach($form_array as $key => $value) 
{ 
    echo "The key is: $key <br>"; 
    echo "The value is: $value <br>"; 
} 

回答

0

那是因爲你的數組是數字索引。該確實012311分別。

查看更多about arrays in PHP

從你的意見,似乎什麼你需要的是這些選項的陣列,嵌入式的,因此你可以匹配他們與目前的陣列:

array(1 => 'Admin', 
    2 => 'Moderator', 
    3 => 'User', 
    4 => 'More'); 
+0

哦,那麼我如何獲取選擇項目的名稱? – intelis

+0

你必須建立一個包含這些值的數組並相應地鍵入它們。 –

+0

我在更新中添加了一個。 –

0

我無法重現此問題。這樣做的$ _ POST一個什麼樣的var_dump我得到的是:

array(3) { 
    [1]=> 
    string(1) "3" 
    [2]=> 
    string(1) "1" 
    [3]=> 
    string(1) "1" 
} 

如果你var_dumping $ _ POST和仍然得到0基於密鑰,那麼它必須是一個特定版本的PHP古怪,而且我建議使用字符串而不是(「value1」,「value2」,「value3」等)。如果你var_dumping不同的數組,那麼它可能是你沒有向我們展示哪些是重新索引數組的代碼。