我正在将feed广告添加到我的网站。我有一个foreach语句,用于创建帖子列表。我创建了一个计数器,该计数器应该每四个帖子计数一次,然后插入广告内容,然后重复。
我已经尝试过其他迭代,但这是我实际上可以做的事情。我可以找到很多有关wordpress的确切信息。但是我正在运行蛋糕php,并且希望使用纯PHP解决方案。
<?php
$count = 1;
foreach($stories as $story) {
echo '<h2><a href="'.BASE_URL.'/'.$story->slug.'">'.$story->title.'</a></h2>';
if(!empty($story->excerpt)) {
echo $story->excerpt;
} else {
echo limit_text($story->body);
}
if ($count % 4 == 1) {
echo AD_SENSE_INFEED;
}
}
$count++;
?>
这段代码是我目前拥有的,但是无法按我希望的方式工作。仿佛现在基本上彼此隔goes了。因此,POST,AD,POST AD ...等。
答案 0 :(得分:1)
您的问题不是编码问题,而是数学问题。您使用的基本上称为模数或余数。
这样说:
if ($count % 4 == 1) {
要使其等于1,我们必须喂入一次均匀进去并再留一遍的东西。
您想要做的是:
if ($count % 4 == 0) {
再也就是说,没有余数,有4个被平均分配,没有剩余。
正如@RiggsFolly所提到的,我完全错过了这一点(给他的评论以投票表决),您的$ count变量也应该在循环内递增,否则它将在循环结束后仅递增一次。
答案 1 :(得分:0)
您可以完全消除计数(而仅使用数组的数字索引)
//just some "test" data
$stories = array_fill(0, 100, []);
foreach( $stories as $count => $story) {
echo $count." ".($count % 4)."\n";
if ($count % 4 == 3) {
echo "--------------------------------------\n";
}
}
输出:
0 0
1 1
2 2
3 3
--------------------------------------
4 0
5 1
6 2
7 3
--------------------------------------
...
如果不确定键的顺序是否正确,可以重置它们:
foreach(array_values($stories) as $count => $story) {
很显然,数组从0
开始,因此您必须将%
的结果偏移一点……大声笑……是的,我懒得增加。