Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 测试变量是否存在,然后结束for循环_Php - Fatal编程技术网

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

Php 测试变量是否存在,然后结束for循环,php,Php,这不起作用,我想让它做的是浏览帖子,直到没有更多的项目\u name1,它们会增加到项目\u name2-项目\u name3等。。。。不会吐出错误,只是不做它应该做的事情,检查是否有人在这里看到错误。谢谢 if(isset($_POST['item_name1'])){ for($i = 1; $i < 9999; $i++) { if(isset($_POST['item_name$i'])){ do this thing } else{

这不起作用,我想让它做的是浏览帖子,直到没有更多的项目\u name1,它们会增加到项目\u name2-项目\u name3等。。。。不会吐出错误,只是不做它应该做的事情,检查是否有人在这里看到错误。谢谢

if(isset($_POST['item_name1'])){
    for($i = 1; $i < 9999; $i++) {
    if(isset($_POST['item_name$i'])){
    do this thing
    }
    else{
    $i = 10000;
    }
    }
    }
if(isset($\u POST['item\u name1'])){
对于($i=1;$i<9999;$i++){
如果(isset($\u POST['item\u name$i'])){
做这件事
}
否则{
$i=10000;
}
}
}

在循环中更正$\u POST['item\u name$i'] 让它像这样,然后再试一次

if(isset($_POST['item_name'.$i])) { do something; } 如果(isset($\u POST['item\u name.$i])) { 做点什么; }
如果我错了,我向您道歉

请尝试将您的
$I
放在
商品名称
后面,例如:

$_POST['item_name'.$i]

将“项目名称$i”更改为双引号
“项目名称$i”

if(isset($\u POST['item\u name1'])){
对于($i=1;$i<9999;$i++){
如果(isset($\u POST[“项目名称$i”])){
做这件事
}
否则{
$i=10000;
}
}
}
尝试以下操作

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;
        }
    }
}
if(isset($\u POST['item\u name1'])){
对于($i=1;$i<9999;$i++){
如果(isset($_POST[“item_name$i”]){{#或者仅仅如果(isset($_POST[“item_name.”$i]))
双引号^-----------^
}否则{
打破
}
}
}

您正在处理一个经典的
$\u 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][]" ... />
实际上,每当您发现自己想要在输入名称中增加这样的值时,您几乎可以打赌使用数组表示法是一种更好的方法


例如,使用这种方法,您不需要循环遍历
$i
的一组值,因为该索引可能存在于
项\u name$i
中。相反,您已经拥有了包含所有适当
项目名称[i]
值的数组。

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


if(isset($\u POST['item\u name$i']){
更改为
if(isset($\u POST['item\u name$i]]){

请澄清您想问什么?您可以在php中使用break;命令停止循环。
<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][]" ... />
[
  0 => [
    0 => "some value",
    1 => "some other value"
  ],
  1 => [
    0 => "yet another value",
    1 => "foo",
    2 => "bar"
  ],
  3 => [
    0 => "last one"
  ]
]