提问人:Pacerier 提问时间:7/29/2020 最后编辑:Pacerier 更新时间:7/30/2020 访问量:74
自动增量父数组的 PHP 语法
PHP syntax for autoincrement parent array
问:
<input name=foo[]>
<input name=foo[]>
<input name=foo[][]><input name=foo[][]><input name=foo[][]>
<input name=foo[]>
$_POST['foo']
不是作为 创建的。array('1st', '2nd', array('3rd', '4th', '5th'), '6th')
为了做到这一点,我必须输入子数组的索引:
<input name=foo[]>
<input name=foo[]>
<input name=foo[2][]><input name=foo[2][]><input name=foo[2][]>
<input name=foo[]>
然而,这不太整洁(特别是对于运行巨大索引的页面)。
有没有更简洁的语法来解决这个问题?
也许可以引用该数组级别的最新索引的语法?
例如,如果下划线字符会这样做,那么与其跟踪丑陋的$i变量,不如像这样简单:
<input lorem name=foo[]> lo
<input ipsum name=foo[][]> re <input jhuin name=foo[_][]><input velit name=foo[_][]>
<input neque name=foo[]> mi
<input porro name=foo[]> ps
<input situn name=foo[]> um
<input quiar name=foo[]> jh
<input dolor name=foo[][]> ui <input adipi name=foo[_][]>
<input conse name=foo[]> nv
..甚至:
<input lorem name=foo[]> lo
<input ipsum name=foo[]> re
<input jhuin name=foo[][]><input velit name=foo[_][]><input neque name=foo[_][]>
mi <input porro name=foo[_][_][]>
ps <input situn name=foo[_][_][]>
um <input quiar name=foo[_][_][]>
jh <input dolor name=foo[_][_][]>
<input conse name=foo[]> ui
<input adipi name=foo[]> nv
<input yaruk name=foo[]> el
答:
0赞
Raghav Bhardwaj
7/29/2020
#1
您必须为索引指定一个值才能创建类似 的数组。 array('first', array('second', 'third', 'fourth'), 'fifth')
没有办法。像 foo[] 一样执行操作会自动为数组提供索引。 这是array_push的快捷方式。 input 中的 foo[] 大致表示 push 变量名 foo 中输入的值,如您所知,push 总是会在末尾附加 value。
1赞
F.Igor
7/29/2020
#2
这是不可能的。一种选择是使用JSON序列化表单数据,然后您可以根据需要将JSON数据发送到服务器。一个示例实现是 Jquery 插件(无内置转换)serializeJSON
var data=$("form").serializeJSON();
甚至您可以转换回 POST 或 GET 的常规查询字符串(添加索引)
var queryString = $.param(data);
现在,queryString 已按预期方式编制索引。
$(function(){
var data=$("form").serializeJSON();
console.log(data);
var newQueryString = $.param(data);
console.log(newQueryString);
$("body").append($("<pre></pre>").text(JSON.stringify(data,null," ")));
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.serializeJSON/2.9.0/jquery.serializejson.js"></script>
<form method="POST">
<input name=foo[] value=1>
<input name=foo[] value=2>
<input name=foo[][] value=3><input name=foo[][] value=4><input name=foo[][] value=5>
<input name=foo[][][] value=6>
<input name=foo[][][] value=7>
<input name=foo[][][] value=8>
<input name=foo[][][] value=9>
<input name=foo[] value=10>
<input name=foo[] value=11>
<input name=foo[] value=12>
<input type="submit" value=Submit>
</form>
评论