使用动态名称迭代Superglobal

时间:2014-05-19 22:32:11

标签: javascript php post

对于学校作业,我必须建立一个客户端购物车。该作业声明我只能使用PHP发送订单确认。我正在使用隐藏的表单字段(在迭代cookie之后生成)将订单详细信息发送到结账页面,PHP将接管该页面。

一页上的表单字段

NumberOrdered = 0;
NumberOrdered = readCookie("NumberOrdered");

for (i=1; i <= NumberOrdered; i++){
    NewOrder = "Order"+ i;
    thisCookie = "";
    thisCookie = readCookie(NewOrder);

    fields = new Array();
    fields = dezeCookie.split("|");
    document.write("<input type=hidden name=\"ID_"+ i +"\" value=\"" + fields[0] + "\">");
    document.write("<input type=hidden name=\"BRAND_"+ i +"\" value=\"" + fields[1] + "\">");
    document.write("<input type=hidden name=\"MODEL_"+ i +"\" value=\"" + fields[2] + "\">");
    document.write("<input type=hidden name=\"MATERIAL_"+ i +"\" value=\"" + fields[3] + "\">");
    document.write("<input type=hidden name=\"PRICE_"+ i +"\" value=\"" + fields[4] + "\">");


}

我在通过$ _POST超全球的价值迭代时遇到了麻烦。我想使用一个for循环来存储数组中的值。我的确做错了。

提交后

<?php
for ($i = 1; $i > 12; $i){
    if(!empty($_POST["ID_$i"]) && !empty($_POST["BRAND_$i"]) && !empty($_POST["MODEL_$i"]) && !empty($_POST["MATERIAL_$i"]) && !empty($_POST["PRICE$i"])){
        $i = array ('id' => $_POST["ID_$i"],
                    'brand' => $_POST["BRAND_$i"],
                    'model' => $_POST["MODEL_$i"],
                    'material' => $_POST["MATERIAL_$i"],
                    'price' => $_POST["PRICE_$i"],
                );
        echo "$i";
    }
}
?>

通过$ _POST超全局迭代不起作用..什么会起作用?

1 个答案:

答案 0 :(得分:0)

小姐对连词的解释:

$_POST['ID_' . $i], 
$_POST['BRAND_' . $i],

或者,如果您总是拥有相同数量的带有值的字段,例如,您可以将每个字段的名称设置为ID[],并将其作为普通数组进行访问:$_POST['ID'][0],{{ 1}},$_POST['ID'][1],...

虽然你必须确保所有字段都有一些价值。空值,空值或缺失值不会表示为$_POST['ID'][2]的空值,数据之间的关系也会丢失。

顺便说一下,你的$_POST会覆盖你自己的计数变量

您的$i = array(...循环错误。实际上,你永远不会达到一个循环,因为你写了:for