PHP关联数组,以数字作为索引

时间:2012-12-31 04:11:56

标签: php html arrays

我有一个表单,有多个选择下拉列表。我用数字命名每一个。

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

2 个答案:

答案 0 :(得分:0)

这是因为你的数组是用数字索引的。 确实是012311

详细了解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一个不同的数组,那么它可能是你没有向我们展示的一些代码,它们正在重新索引数组。