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

时间:2015-07-12 13:20:33

标签: php arrays foreach

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

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

$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

2 个答案:

答案 0 :(得分:3)

您不需要额外的变量,因为您的数组是基于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

答案 1 :(得分:0)

你想要检查第二个和第三个是否实现繁荣。因为你还希望在动臂之后完成分离器,然后将其关闭。

$ 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++;

                        }