数组索引自动从1开始


Array index automatically starts at 1

我有两种输入类型。我有4个选择框和4个带有隐藏字段的复选框。复选框与选择框具有相同的名称。提交后,我这样做:

var_dump(Input::get(checkboxname));
var_dump(Input::get(selectboxname));

哪个输出:

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

这是我的选择框:

<select name="selectboxname[]" >
//values in a complicated for loop that's not important but it works
</select>

这是我的复选框:

<input  type='hidden' value='othervalue' name='checkboxname[]'>
<input  type="checkbox" name="checkboxname[]" value="value">

在数组中,复选框的索引如下:1,2,3,4,选择框的索引为0,1,2,3。我必须使索引相互匹配。我知道通常索引从0开始,所以选择框做得很好。这里出了什么问题?

如果您想从零开始重新索引数组,只需执行以下操作:

array_values(Input::get('checkboxname'));
<input  type='hidden' value='othervalue' name='checkboxname[]'>
<input  type="checkbox" name="checkboxname[]" value="value">

似乎type='hidden'变成了checkboxname[0]。

如果您想要未检查的值,也许您应该在名称中使用数字:

<input  type='hidden' value='othervalue' name='checkboxname[0]'>
<input  type="checkbox" name="checkboxname[0]" value="value">
<input  type='hidden' value='othervalue' name='checkboxname[1]'>
<input  type="checkbox" name="checkboxname[1]" value="value">

我的猜测是,它与laravel如何处理输入($_POST或$_GET)有关

对您正在使用的(POST或GET)执行var_dump,然后参阅。直接从$_数组访问值可能更好。

尝试array_values来重新索引您的数组

<?php
$array = array("size" => "XL", "color" => "gold");
print_r(array_values($array));
?>

输出:

Array
(
    [0] => XL
    [1] => gold
)