Php 数组索引自动从1开始
我有两种输入类型。我有4个选择框和4个带有隐藏字段的复选框。复选框与选择框具有相同的名称。提交后,我会这样做: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" [
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
)