首页 > 解决方案 > 在达到循环的前三分之一后做某事

问题描述

我有一个数组,其中包含在网站上循环和打印的任意数量的项目。在循环(大约)三分之一的数组后,我必须打印一个广告横幅。我如何找出三分之一被循环,只得到一个阳性结果?

foreach (range('a', 'z') as $iteration => $item) {
    echo $item."<br>";

    /** @TODO correct condition needed: do this only once after the first third of the items was looped **/
    if(0 === 1) {
        echo "print ad<br>";
    }
}

标签: phploopsforeach

解决方案


使用计数器?

$totalElements = count(range('a', 'z'));
$currentCount = 0;
$adPosted = false;
foreach (range('a', 'z') as $iteration => $item) {
    //increase counter
    $currentCount++;
    echo $item."<br>";

    //check for 1/3rd condition
    if (($currentCount >= ($totalElements/3)) && (!$adPosted)) {
        echo "print ad<br>";
        $adPosted = true;
    }
}

那不行吗?

根据 u_mulder 信息进行编辑:

使用iteration而不是创建额外的计数器:

$totalElements = count(range('a', 'z'));
$adPosted = false;
foreach (range('a', 'z') as $iteration => $item) {
    echo $item."<br>";

    //check for 1/3rd condition
    if (($iteration >= ($totalElements/3)) && (!$adPosted)) {
        echo "print ad<br>";
        $adPosted = true;
    }
}

没有测试它,但理论上它应该可以工作。

请注意adPosted标志,您需要这样,一旦到达数组的 1/3,脚本就不会继续发布广告。


推荐阅读