【发布时间】:2017-06-25 09:47:52
【问题描述】:
我有一个多级数组字段需要通过表单提交。不确定最简单的解决方案是什么:
由于 php 会自动将点转换为下划线,所以我将其更改为数组:
$form['a.b_b.c'] ==> <input name="a[b_b][c]" value="$form[a.b_b.c]">
我正确地得到了$_POST[a][b_b][c]。
但是,将这个$_POST 值分配回原始$form['a.b_b.c'] 而没有太多循环的最简单方法是什么?例如
$form['a.b_b.c'] = $_POST['a']['b_b']['c'];
或者有没有更好的步行方式?
非常接近这个问题,但还没有: Convert dot syntax like "this.that.other" to multi-dimensional array in PHP
这是我目前的解决方案:
foreach ($form as $k) {
$form[$k] = assign_val($_POST, $k);
}
function assign_val($arr = [], $key = '') {
$keys = explode('.', $key);
$val = &$arr;
foreach ($keys as $k) {
$val = &$val[$k];
}
return $val;
}
【问题讨论】:
-
不是 100% 你想要的,但也许 extract() 会帮助你? php.net/manual/en/function.extract.php
-
也许您可以向我们展示表格并更好地解释问题
-
我想建议将标题改为"如何将['a'=>['b'=>['c'=>'d']]] 转换为[ 'abc'=>'d'] 轻松"