如何在循环运行时创建循环计数器


How to create a loop counter while loop is runing?

我想创建一个计数器。我有一个foreach循环值。我想在脚本运行时显示计数。如何在脚本运行时设置计数器?

foreach ($_productCollection as $_product){
    $attrapivalue = $_product->getAttributeText('apivalue');
    $prosku =  $_product->getSku();
    if (!in_array($prosku, $array) && $attrapivalue=="No"){
        echo "<p class='count'>";
        $i++;
        echo "</p>";
    }                   
}
echo "<p class='test'>Total Matched : </p>";
echo "<br>";
echo "Not Found : " .$k;

这个问题(或者至少应该(与PHP完全无关。使用PHP输出数据,包括总计数。然后,使用javascript/jQuery创建从0计数到总数的视觉效果,例如在文档就绪时。

<p class='test'>Total Matched : <span>888</span></p>

Javascript

$(function(){
    var item = $('.test > span');
    var total = parseInt(num.text());
    var counter = 0;
    var timer = setInterval(function(){
      counter ++;
      item.text(counter);
      if(counter >= total) clearInterval(timer);
    }, 10);
});

`

这行不通。只有在PHP完成执行之后才会显示输出。

PHP代表:"PHP:超文本预处理器",注意"预处理器"部分,它预处理页面并创建HTML,一旦运行就不能修改HTML。

脚本运行时不能显示php的foreach计数。

PHP不是这样工作的。PHP是HTML的预处理器。它在服务器端将动态代码整体转换为纯html,然后将整个html文件发送到浏览器。

因此,您没有向用户端显示phploop的计数器值的选项。

您也可以使用Ajax。但同样,只有在PHP脚本完成执行后,PHP才会立即发送整个ajax响应。您必须在客户端实现一些javascript循环机制,以便按照suncat100的建议逐个显示计数器值。

如果你想向用户展示价值更新动画,你可以试试这个,

PHP

$i=0;
foreach ($_productCollection as $_product){
    $attrapivalue = $_product->getAttributeText('apivalue');
    $prosku =  $_product->getSku();
    if (!in_array($prosku, $array) && $attrapivalue=="No"){
        echo "<p class='count'>";
        $i++;
        echo "</p>";
    }                   
}

HTML(JS(

<script>
$(function(){
    var item = $('.test > span');
    var total = <?php echo $i?>;
    var counter = 0;
    var timer = setInterval(function(){
      counter ++;
      item.text(counter);
      if(counter >= total) clearInterval(timer);
    }, 10);
});
</script>
</body>

在同一页面中同时使用php和JS代码。将JS代码部分放在</body>结束之前。