【发布时间】:2015-03-09 02:04:12
【问题描述】:
我的变量在 php 的嵌套 foreach 循环中出现问题:
内部循环完成后,我的变量 $counter 不会重置为 1。我也尝试取消设置($co unter) 在内循环之后,这也没有任何效果。我知道 php 中的 foreach 循环没有内部范围。但我想,一旦我在内循环完成后设置了 $counter=1,那么下一个外循环和新的内循环应该再次以 $counter=1 开始??
<?php
$counter = 1;
foreach($loop1 as $x){
foreach($loop2 as $y){
if($counter==1){do something};
else {do something else};
$counter++;
};
$counter = 1;
}
?>
这是实际代码:
<?php
$i=1;
foreach ($neu as $n) {
$gcount = 1;
echo'<div> </div>';
foreach ($gesendet as $g) {
if (($n["Quelle"] ==$g["Quelle"]) || ($n["Quelle"] ==$g["Ziel"])){
if ($gcount == 1){
echo nl2br("\n");
}
else {
echo'<div id="divtoggle">' .nl2br("\n")."at ".$g['Datum']." ". htmlspecialchars($g['username']). nl2br(" wrote: \n") ;
echo "\"".htmlspecialchars($g['Inhalt']). "\"" .nl2br("\n");
echo '</div>';
}
}
$gcount++;
}
unset($gcount);
echo '</div>';
$i++;
}
?>
【问题讨论】:
-
你怎么知道它没有设置为
1? -
因为它在通过循环 1 和循环 2 的第二次迭代期间不执行 if($counter==1)[do something}。我也回显了 $counter,它只是 1第一次迭代。
-
提供自包含的代码,以便我们自己运行和查看。提供
$loop1和$loop2的静态定义。 -
所以您提供了实际代码。我们应该如何运行它来重现问题。
-
你不会的。在这里设置整个 sql 查询等是不可能的。猜猜我必须自己解决这个问题
标签: php loops variables foreach unset