测试是否存在变量,然后结束for循环

时间:2013-12-06 07:12:21

标签: php

这不起作用,我想要它做的是通过帖子直到没有更多item_name1并且他们增加到item_name2 - item_name3 ect ....没有吐出错误,只是不做它是什么意思,检查是否有人在这里看到一个。感谢

if(isset($_POST['item_name1'])){
    for($i = 1; $i < 9999; $i++) {
    if(isset($_POST['item_name$i'])){
    do this thing
    }
    else{
    $i = 10000;
    }
    }
    }

6 个答案:

答案 0 :(得分:1)

在循环中更正$ _POST ['item_name $ i'] 让它成为这样的东西再试一次


    if(isset($_POST['item_name'.$i]))
    {
    do something;
    }

如果我错了,我道歉

答案 1 :(得分:1)

尝试将$i放在item name后面,例如:

$_POST['item_name'.$i]

答案 2 :(得分:0)

'item_name$i'更改为双引号"item_name$i"

if(isset($_POST['item_name1'])){
    for($i = 1; $i < 9999; $i++) {
        if(isset($_POST["item_name$i"])){
            do this thing
        }
        else{
            $i = 10000;
        }
    }
}

答案 3 :(得分:0)

尝试以下

if(isset($_POST['item_name1'])){
    for($i = 1; $i < 9999; $i++) {
        if(isset($_POST["item_name$i"])){ #or just if(isset($_POST['item_name' . $i]))
         double quotes  ^-----------^
        }else{
            break;
        }
    }
}

答案 4 :(得分:0)

您正在处理经典的$_POST反模式。您应该做的就是发布数据数组。这从适当的输入命名开始。我可以建议这样的事情:

<input name="item_name[1][]" ... />
<input name="item_name[1][]" ... />
<input name="item_name[2][]" ... />
<input name="item_name[2][]" ... />
<input name="item_name[2][]" ... />
<input name="item_name[3][]" ... />

通过使用这种命名约定,您可以将多维数组发布到可以使用的$_POST['item_name'],而无需在使用之前按摩数据。

例如,在这种情况下,您将获得$_POST['item_name']

这样的数组
[
  0 => [
    0 => "some value",
    1 => "some other value"
  ],
  1 => [
    0 => "yet another value",
    1 => "foo",
    2 => "bar"
  ],
  3 => [
    0 => "last one"
  ]
]

实际上,当你想要在输入名称中增加值时,你几乎可以认为使用数组表示法是一种更好的方法。

例如,使用此方法,您无需循环遍历$i的一堆值,因为此索引可能出现在item_name$i中。相反,您已经拥有已填充所有适当item_name[i]值的数组。

答案 5 :(得分:0)

您使用单引号来包装变量$i

if(isset($_POST['item_name$i'])){更改为if(isset($_POST["item_name$i"])){