php - 在达到循环的前三分之一后做某事
问题描述
我有一个数组,其中包含在网站上循环和打印的任意数量的项目。在循环(大约)三分之一的数组后,我必须打印一个广告横幅。我如何找出三分之一被循环,只得到一个阳性结果?
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>";
}
}
解决方案
使用计数器?
$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,脚本就不会继续发布广告。
推荐阅读
- javascript - ckeditor5:当样式名称相同时,不合并具有内联样式的跨度元素
- vue.js - vuejs应用程序中三元运算符的未定义错误
- c++ - 无论如何在qt的同一个窗口中放置一个QTreeView和一个QChartView?
- java - 我如何确定 Java 类型是否可从 JSON 转换为 JSON
- python - Numpy 索引嵌套数组,其中包含来自另一个数组的索引
- typescript - TypeScript 中的多个可选参数
- php - php 7.3 中的非数值
- python - 如何将两个列表组合在一起,每个元素合二为一?
- javascript - React Hooks 和异步操作
- c - 如何计算一个字母在字符串中出现的次数?C 编程