我有两个同名的下拉选项,如下所示。
<form action="" method="post">
<select name="freeoptions[]">
<option value="[7][4]">Black</option>
<option value="[7][5]">Blue</option>
<option value="[7][3]">Red</option>
</select>
<select name="freeoptions[]">
<option value="[9][11]">Small</option>
<option value="[9][15]">Large</option>
<option value="[9][13]">XL</option>
</select>
<input type="submit" name="submit" value="submit">
</form>
现在,当我发布表单时,将数据发布到数组中,如
Array
(
[freeoptions] => Array
(
[0] => [7][4]
[1] => [9][11]
)
)
但是我希望这个数组像
Array
(
[freeoptions] => Array
(
[0] => Array
(
[id] => [7]
[value] => [4]
)
[1] => Array
(
[id] => [9]
[value] => [11]
)
)
)
任何人都可以帮我解决这个问题。 谢谢,
答案 0 :(得分:1)
“value”属性中的任何内容都将作为文字字符串发送,无论其内容如何,因此您无法将值作为数组开箱即用。
您始终可以在同一个值属性中同时使用这两个值,并将其拆分在后端。
HTML中的示例:
<option value="7;4"></option>
然后在你的后端做这样的事情:
$data = [];
// Loop all freeoptions params
foreach ($_POST['freeoptions'] as $opt) {
// Split the value on or separator: ;
$items = explode(';', $opt);
if (count($items) != 2) {
// We didn't get two values, let's ignore it and jump to the next iteration
continue;
}
// Create our new structure
$data[] = [
'id' => $items[0], // Before the ;
'value' => $items[1], // After the ;
];
}
$data
- 数组现在应该包含您想要的数据结构。
如果您想继续使用$_POST
- 变量,只需在foreach之后覆盖原始数据:
$_POST['freeoptions'] = $data;
答案 1 :(得分:0)
您想显示数据库结果还是手动显示?