HTML表单将两个deminion数组传递给PHP(我认为是特殊情况)


HTML Form passing two deminsion array to PHP (special case i think)

此 HTML 代码

<input name="Html_Array[][title]">
<input name="Html_Array[][amount]">

生成此 PHP 数组

    [0] => Array
            (
                [title] => Seilpendel für Tragsysteme
            )
        [1] => Array
            (
                [amount] => 2
            )...So on
什么是

HTML代码生成以下PHP数组

        [0] => Array
            (
                [title] => Seilpendel für Tragsysteme
                [amount] => 1
            )
        [1] => Array
            (
                [title] => Article Tiel
                [amount] => 2
            )

数组的大小未知,因此我们无法将索引硬编码为 0,1,2 等

每次添加新的表单字段组时保留索引(使用 jQuery):

window.count = 0;
$('#add-more-button').on('click', function() {
 $('<input name="html_array[' + window.count + '][title] />').appendTo('form:first');
 $('<input name="html_array[' + window.count + '][amount] />').appendTo('form:first');
 window.count++;
});

你应该得到正确的结构。

如果你的意思是PHP,请编辑:

// Assuming 0-indexed array
foreach($my_array as $key => $value) {
 echo '<input name="html_array[' . $key . '][title]" />';
 echo '<input name="html_array[' . $key . '][value]" />';
}

我认为你不能在HTML中创建确切的结构。只需合并它们:

$result = array();
$current = array();
foreach($input as $item) {
    $k = reset(keys($item));
    if(isset($current[$k])) {
        $result[] = $current;
        $current = array();
    }
    $current[$item] = $item[$k];
}
 <input name="Html_Array[0][title]">
 <input name="Html_Array[0][amount]">
 <input name="Html_Array[1][title]">
 <input name="Html_Array[1][amount]">

等等...

循环可用于生成所需的整数序列。

只需删除包装第二维数组名称的引号

 <input name="Html_Array[][title]">
 <input name="Html_Array[][amount]">