首页 > 解决方案 > PHP foreach 表单按顺序显示 3 组数组

问题描述

我有这个具有“添加字段”功能的表单。当触发/单击添加字段时,将添加一组新的 price[]、pax[] 和 days[],它将成为一个数组。

我的问题是,当我点击提交按钮时,是否有这样的结果?按此顺序显示它们?

    price[0] - pax[0] - days[0]
    price[1] - pax[1] - days[1]
    price[2] - pax[2] - days[2]

我试过这个,但它只对 [0] 有效,对其余的 [1] 和 [2] 无效。PHP

    foreach()   {
        // echo here [0]
        foreach()   {
            // echo here [1]
            foreach()   {
                // echo here [2]
            }
        }
    }

下面是我的代码。

    <div>
        <form method="post">
            <div class="" id="buildyourForm">
                <input name="price[]" type="number">
                <select name="pax[]">
                    <option value="2">2</value>
                    <option value="3">3</value>
                    <option value="4">4</value>
                </select>
                <select name="days[]">
                    <option value="2">2 days</option>
                    <option value="3">3 days</option>
                    <option value="4">4 days</option>
                </select>

                <input type="submit" name="submit">

                <div>
                    <input type="button" id="add_field">
                </div>
            </div>
        </form>
    </div>

jQuery/Javascript

$(document).ready(function() {
    $("#add_field").click(function() {
        var lastField = $("#buildyourform div:last");
        var intId = (lastField && lastField.length && lastField.data("idx") + 1) || 2;
        var fieldWrapper = $("<div id=\"field"+ intId + "\"/>");
        fieldWrapper.data("idx", intId);

        var layer_1 = $("<label ">Package "+intId+" </label>");
        var layer_2 = $("<input name=\"price[]\" type=\"number\" />");
        var layer_3 = $("<select name=\"pax[]\"><option value=\"2\">2</value><option value=\"3\">3</value><option value=\"4\">4</value></select>");
        var layer_4 = $("<select name=\"days[]\"><option value=\"2\">2 days</option><option value=\"3\">3 days</option><option value=\"4\">4 days</option></select>");
        var layer_5 = $("<input name=\"hidden[]\" type=\"hidden\" value\="+intId+"\ />");

        var removeButton = $("<input type=\"button\" value=\"X\" />");

        removeButton.click(function() {
            $(this).parent().remove();
        });
        fieldWrapper.append(layer_1);
        fieldWrapper.append(layer_2);
        fieldWrapper.append(layer_3);
        fieldWrapper.append(layer_4);
        fieldWrapper.append(layer_5);
        fieldWrapper.append(removeButton);
        $("#buildyourform").append(fieldWrapper);
    });

});

标签: phparraysloopsforeach

解决方案


如果我的问题正确,您想打印如下值:

for($i=0; $i<count($_POST['price']); $i++){
   $price = $_POST['price'][$i];
   $pax   = $_POST['pax'][$i];
   $days  = $_POST['days'][$i];

   echo "$price  $pax  $days <br/>";
}

推荐阅读