我试图在每三个元素之后放置一些广告,但它仍然无法像我想要的那样工作。这就是为什么我创建了一些代码片段,用一个简单的 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 倍更好,但我根本做不到。
由于每个人都渴望证明自己可以算数,所以这是我的尝试:
$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
变量。没用。
查看实际操作。
您需要在这里做的是使用模数 % 运算符,请参阅下面的评论。
<?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";
}
}
?>
使用
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>";
}
}
这应该可以。可能不是最优雅的方式,但它有效:
$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++;
}