【问题标题】:PHP foreach form displaying a 3 sets of array in orderPHP foreach 表单按顺序显示 3 组数组
【发布时间】:2018-12-17 07:05:31
【问题描述】:

我有一个具有“添加字段”功能的表单。当触发/单击添加字段时,将添加一组新的 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);
    });

});

【问题讨论】:

    标签: php arrays loops foreach


    【解决方案1】:

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

    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/>";
    }
    

    【讨论】:

    • 是的,我想打印值 price[0] pax[0] days[0] 然后 price[1] pax[1] days[1] 等等。很抱歉,但这并没有奏效,它变成了一个无限循环。
    • 哦,对不起,我认为它不起作用的原因是因为我在 for 循环中跳过了 $i++。让我尝试更新
    • 哇,它的工作原理!这是我从昨天开始的问题,我真的不能继续前进,直到我让它工作哈哈哈,但现在它的工作非常感谢你。
    【解决方案2】:

    试试下面一个

    $a = array(0, 1, 2);
    $b = array(0, 1, 2);
    $c = array(0, 1, 2);
    
    for ($i = 0; $i < count($a); $i++) {
        echo $a[$i] . $b[$i] . $c[$i];    
        echo '<br/>';
    }
    

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-28
      相关资源
      最近更新 更多