我有一个表单,有多个选择下拉列表。我用数字命名每一个。
问题
当我对结果进行foreach循环时,我可以得到所选的值,但是我 cant 得到密钥?他们从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 :(得分:0)
这是因为你的数组是用数字索引的。 键确实是0
,1
,2
,值是3
,1
,1
。
详细了解arrays in PHP。
从您的评论中,您需要的是一系列选项,键入以便您可以将它们与当前数组匹配:
array(1 => 'Admin',
2 => 'Moderator',
3 => 'User',
4 => 'More');
答案 1 :(得分: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一个不同的数组,那么它可能是你没有向我们展示的一些代码,它们正在重新索引数组。