【问题标题】:PHP nested foreach loop iterate and set variablePHP嵌套foreach循环迭代并设置变量
【发布时间】: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


【解决方案1】:

试试这个。

<?php
foreach($loop1 as $x){
    $counter = 1;
    foreach($loop2 as $y){  
        if($counter==1){do something};
        else {do something else};           
        $counter++;
    }
}    
?>

【讨论】:

  • 是发生了一些递归,看起来它没有重置。你能发布完整的函数吗?
猜你喜欢
  • 1970-01-01
  • 2017-01-15
  • 1970-01-01
  • 2012-05-02
  • 2012-03-29
  • 2014-10-22
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
相关资源
最近更新 更多