提问人:Senne Vandenputte 提问时间:3/3/2023 最后编辑:Andy PrestonSenne Vandenputte 更新时间:3/5/2023 访问量:28
通过 PHP/AJAX 提交具有双嵌套输入的多维数组
Submitting a multidimensional array via PHP/AJAX with double nested inputs
问:
我有一个有点复杂的 HTML 表单,允许用户添加和重新排序带有子行(墙)的行(空格)。
我的输入字段如下所示:
<input type="text" name="spaces[][space]">
<input type="text" name="spaces[][walls][][orientation]">
在工作了整整 2 天后,我设法编写了以下代码,几乎可以正常工作:
$spaces_temp = [];
foreach ($_POST['spaces'] as $k => $v) {
$val = intdiv($k, 2);
$spaces_temp[$val][key($v)] = $v[key($v)];
}
$_POST['spaces'] = $spaces_temp;
$spaces = array_map(
fn($space) => [
"space" => $space['space'],
"walls" => array_map(
fn($wall) => [
"orientation" => $wall['orientation'],
"plastering" => $wall['plastering'],
"color" => $wall['color'],
"condition" => $wall['condition'],
"finish" => $wall['finish'],
"soiled" => $wall['soiled'],
"comments" => $wall['comments'],
],
$space['walls']
),
"extra_information" => $space['extra_information'],
],
$_POST['spaces'] ?? []
);
我的代码的第一部分我从 SO 上的另一个有用的答案中得到。
我知道 中的数字 2 表示空格数组中将有 2 个字段。只要我不添加任何墙壁,这就可以正常工作。我知道我有 9 个字段,但是当我将这个数字更改为 9 时,似乎并没有添加所有字段:奇怪的是,只有字段空间、墙壁>注释和extra_information被添加到数据库中。将数字更改为 2 到 9 之间的任何值会导致在数据库中添加空白区域和墙。intdiv($k,2)
如何更新此代码,以便它以正确的顺序正确地将所有行和子行添加到数据库中?
答: 暂无答案
评论