[英]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
unit
和commit_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.