PHP循环foreach确定第二次和第三次迭代


PHP loop foreach determine 2nd and 3rd iteration

如何检测第二次和第三次迭代

这就是我所做的,但它没有给出正确的答案

$sample_array = array('boom 1','boom 2','boom 3','boom 4','boom 5','boom 6','boom 7');
                            $separator2 = 0;
                            $separator3 = 0;
                            foreach($sample_array as $sample_array_value){
                                if(++$separator3 % 3 == 0)
                                {
                                    echo $sample_array_value."<br /><br /> Separator 3 <br /><br />";
                                }
                                else if(++$separator2 % 2 == 0)
                                {
                                    echo $sample_array_value."<br /><br /> Separator 2 <br /><br />";
                                }
                                else
                                {
                                    echo $sample_array_value."<br />";
                                }
                            }

代码的输出是:

boom 1
boom 2
Separator 2 
boom 3
Separator 3 
boom 4
boom 5
Separator 2 
boom 6
Separator 3 
boom 7

这是错误的,我需要的输出是:

boom 1
boom 2
Separator 2 
boom 3
Separator 3 
boom 4
Separator 2 
boom 5
boom 6
Separator 2 
Separator 3 
boom 7

您不需要额外的变量,因为您的数组是以0为基础进行索引的,因此您可以只使用键。你还必须稍微改变一下你的逻辑,这样你才能得到你期望的输出,例如

foreach($sample_array as $key => $sample_array_value){
    echo $sample_array_value . "<br />";
    if(($key + 1) % 2 == 0 && ($key + 1) % 3 == 0)
        echo "<br>Separator 2 <br />Separator 3<br /><br />";
    elseif(($key + 1) % 2 == 0)
        echo "<br>Separator 2 <br /><br />";
    elseif(($key + 1) % 3 == 0)
        echo "<br>Separator 3 <br /><br />";
}
输出:

boom 1
boom 2
Separator 2 
boom 3
Separator 3 
boom 4
Separator 2 
boom 5
boom 6
Separator 2 
Separator 3
boom 7

你应该在执行boom的if之外检查第二和第三。因为你也希望分隔符在吊杆之后完成,那么把它放下来。

$ sample_array =阵列("繁荣1","繁荣2","繁荣3 ','繁荣4 ',' 5 '繁荣,繁荣6,"繁荣7");

                        $separator2 = 0;
                        $separator3 = 0;
                        $count = 1;
                        foreach($sample_array as $sample_array_value){
                            echo $sample_array_value."<br />";
                            if($count % 3 == 0)
                            {
                                echo "Separator 3 <br />";
                            }
                            if($count % 2 == 0)
                            {
                                echo "Separator 2 <br /><br />";
                            }
                            $count++;
                        }