繁体   English   中英

2个foreach循环使提交的数据增加了三倍

[英]2 foreach loops tripling submitted data

我有3个隐藏字段和3个文本字段。 我需要遍历两者以更新数据库记录。 如果我分别使用foreach循环,它将正确地发布3个值。 如果我尝试一起使用它们,似乎将文本输入值(即日期)增加了三倍。 因此,与其看起来像这样:

1-2017-04-05
2-2017-04-06
3-2017-04-07

看起来像这样:

1-2017-04-05
2-2017-04-05
3-2017-04-05
1-2017-04-06
2-2017-04-06
3-2017-04-06
1-2017-04-07
2-2017-04-07
3-2017-04-07

        foreach($_POST['commit_date'] as $commitdate) {
            foreach($_POST['unit'] as $units) {

                echo $units .= $commitdate . "<br/>";

            }
        }

假设您要发布尺寸为3 unitcommit_date

   foreach($_POST['commit_date'] as $commitdate) { \\ this will iterate 3
        foreach($_POST['unit'] as $units) { \\ this will iterate 9 times

            echo $units .= $commitdate . "<br/>";

        }
    }

您将看到如下输出:

**First Iteration**
1 - 2017-04-05
2 - 2017-04-05
3 - 2017-04-05

**Second Iteration**
1 - 2017-04-06
2 - 2017-04-06
3 - 2017-04-06

**Third Iteration**
1 - 2017-04-07
2 - 2017-04-07
3 - 2017-04-07

如果我分别使用foreach循环,它将正确地发布3个值。 如果我尝试一起使用它们,似乎将文本输入值(即日期)增加了三倍。

那是因为您使用的是嵌套的foreach循环,这意味着对于每个外部循环,内部循环将执行三次。 这就是为什么您获得9个值的原因。

而是使用一个简单的for循环,

$count = count($_POST['unit']);
for($i = 0; $i < $count; ++$i){
    echo $_POST['unit'][$i] .= $_POST['commit_date'][$i] . "<br/>";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM