Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数组索引自动从1开始_Php_Html_Arrays_Laravel_Checkbox - Fatal编程技术网

Php 数组索引自动从1开始

Php 数组索引自动从1开始,php,html,arrays,laravel,checkbox,Php,Html,Arrays,Laravel,Checkbox,我有两种输入类型。我有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个选择框和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>

//复杂for循环中的值虽然不重要,但可以正常工作
这是我的复选框:

<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'));


类型class='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如何处理输入有关($\u POST或$\u GET)

为您正在使用的文件(POST或GET)进行var_转储,然后查看。最好直接从$数组访问值。

尝试重新索引数组

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

你的意思是
var\u dump($checkboxname)-否则您只需输出单个string@n-dru Yup我编辑了它。这不是因为你有一个与checkbox同名的隐藏元素吗?@AndreiNikolaenko我已经尝试删除隐藏字段,但它没有改变任何东西。你可以使用
var\u dump($\u POST)
(resp.$\u GET)检查“原始”发布/获取数据吗在你的剧本一开始就想排除拉威尔这样做的可能性?嗯,是的。如果不选中复选框,它将使用隐藏字段的值它实际上会给我正确的索引。仍然不知道为什么会出错,我正在考虑使用
array\u值(Input::get('checkboxname'))
。因为没有人能真正理解这种奇怪的行为。解释
数组_值()在您的答案中,删除有关复选框的错误部分,当我不选中它时,不发送任何数据。好的编辑后我会接受的关于复选框的部分没有错,但是因为你使用了一个隐藏的元素,所以对于这个问题的未来访问者来说,回答这个问题是没有用的,这并不能解释这种奇怪的行为。这是一个获得正确索引的解决方案。我仍然在寻找行为的解释,如果是这样的话,它仍然应该显示数组中隐藏字段的值,对吗?嗯。。。你说得有道理。尝试给隐藏的文件指定一个唯一的值,然后打印/回显/提醒它的值来测试它。也许值得一提的是,我在for循环中使用了这个值。我确实得到了未检查的值。我在
[]
之间有一个变量,所以情况并非如此。如果我不清楚,很抱歉。所以你们可以使用索引值并将其输出到括号中,这应该确保索引正确,也许可以再次检查这个变量值?
<?php
$array = array("size" => "XL", "color" => "gold");
print_r(array_values($array));
?>
Array
(
    [0] => XL
    [1] => gold
)