在每三个元素之后循环执行一些操作,但不在数组中的最后一个元素之后

问题描述 投票:0回答:4

我试图在每三个元素之后放置一些广告,但它仍然无法像我想要的那样工作。这就是为什么我创建了一些代码片段,用一个简单的 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

但我只想要 2x - 就像:

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

2 倍“很棒的东西”会比 3 倍更好,但我根本做不到。

php loops conditional-statements modulo
4个回答
2
投票

由于每个人都渴望证明自己可以算数,所以这是我的尝试:

$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
投票

您需要在这里做的是使用模数 % 运算符,请参阅下面的评论。

<?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";
    }
}

?>

0
投票

使用

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>";
    }
}

-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++;
}
© www.soinside.com 2019 - 2024. All rights reserved.