[英]PHP associative array with number as index
我有一个带有多个选择下拉列表的表单。 我用数字给每个人命名。
问题
当我对结果进行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
, 1
, 2
和的值是3
, 1
, 1
分别。
阅读有关PHP中数组的更多信息。
从您的评论看,您似乎需要的是一组选项,这些选项经过键控,以便您可以将它们与当前数组匹配:
array(1 => 'Admin',
2 => 'Moderator',
3 => 'User',
4 => 'More');
我无法重现此行为。 做一个$ _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一个不同的数组,那么可能是一些代码没有向我们展示正在重新索引该数组的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.