PHP foreach - 在每第三个元素之后做一些事情

时间:2017-08-21 15:19:19

标签: php

我试图在每第三个元素之后放置一些AD,但它仍然不能像我想要的那样工作。这就是为什么我创建了一个小代码剪切,用一个简单的php数组来反映我的情况。

   <?php 

$arr = [1,2,3,4,5,6,7,8,9];
$counter = 1;
foreach($arr as $a){
    echo "$a \n";
    if( $counter%3==0){
        echo "something awesome\n";
    }
    $counter++;
}

这会返回:

1
2
3
something awesome
4
5
6
something awesome
7
8
9
something awesome

But I only want it 2x - like:

1
2
3
something awesome
4
5
6
something awesome
7
8
9

2x“令人敬畏的东西”会比3倍好,但我根本不能做到。

感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

由于每个人都渴望表明他们可以数数,所以这是我的尝试:

$arr = [1,2,3,4,5,6,7,8,9];
foreach ($arr as $k => $a){
    if ($k && $k % 3 == 0) {
        echo "something awesome\n";
    }
    echo "$a \n";
}

很抱歉删除$counter变量。这没用。

答案 1 :(得分:1)

使用foreach()时,您可以使用数组的$key$value

<?php 

$arr = [1,2,3,4,5,6,7,8,9];

$counter = count($arr);

foreach($arr as $key => $value){
    echo $value . '<br>';

    if($key % 3 == 2 && $key+1 < $counter ){
        echo "something awesome<br>";
    }
}

答案 2 :(得分:0)

您需要做的是使用模数%运算符,请参阅下面的注释。

<?php

$arr = [1,2,3,4,5,6,7,8,9];

foreach($arr as $a)
{
    echo "$a\n";
    if($a % 3 == 0) // If $a divided by 3 leaves no remainder 
    {
        echo "something awesome\n";
    }
}

?>

答案 3 :(得分:-1)

这应该这样做。可能不是最优雅的方式但它有效:

$arr = [1,2,3,4,5,6,7,8,9];
$counter = 1;
$overallCount = 1;
foreach($arr as $a){
    echo "$a \n";
    if( $counter == 3 && $overallCount < count($arr)){
        echo "something awesome\n";
        $counter = 0;
    }
    $counter++;
    $overallCount++;
}