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

时间:2015-07-16 07:44:12

标签: php jquery foreach

我想创建一个计数器。我有一个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;

3 个答案:

答案 0 :(得分:1)

这个问题(或者至少应该)与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);
});

`

答案 1 :(得分:0)

这不起作用。输出仅在PHP完成执行后显示。

PHP代表:“PHP:Hypertext Preprocessor”,注意“预处理器”部分,它预处理页面并创建HTML,它一旦运行就无法修改HTML。

答案 2 :(得分:0)

在脚本运行时,您无法显示php foreach的计数。

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

因此,您无法向用户端显示php loop的计数器值。

您也可以使用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代码。在结束</body>之前放置JS代码部分。