我想创建一个计数器。我有一个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;
答案 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代码部分。