0

我有一个表格,有多个选择下拉菜单。我用一个数字给每个人命名。

问题
当我对结果进行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>";
}
4

2 回答 2

0

那是因为您的数组是数字索引的。确实是0, 1分别2是, 。_311

阅读更多关于PHP 中的数组

根据您的评论,您似乎需要一个选项数组,键控以便您可以将它们与当前数组匹配:

array(1 => 'Admin',
  2 => 'Moderator',
  3 => 'User',
  4 => 'More');
于 2012-12-31T04:14:30.197 回答
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 一个不同的数组,那么可能是您没有向我们展示的一些代码正在重新索引数组。

于 2012-12-31T04:32:24.360 回答