我想显示在foreach
循环中计算出的变量的内容。问题是我想在循环之前回显它。
<?php
echo $total; // note this line I want to appear the total count of loop. the problem is it cannot appear because it is in the above of foreach loop. I want to appear it in this above before foreach loop.
$total = 0;
foreach($pathList as $item) {
$fileInfo = pathinfo($item);
if(preg_match(strtolower('/\b'.$_POST['song'].'\b/'), strtolower($filename))) {
$total = $total + 1; // the total count of foreach loop I want to appear in echo $total
}
// some code
}
?>
我确实想在循环内回显它,但是在完成循环后只回显一次。
知道如何解决这个问题吗?我尝试了global $total
,但是没有用...
谢谢!
答案 0 :(得分:2)
通常-否。您不能回显尚未计算的变量(PHP中的同步)。
如果您在union
中所做的关于for-loop
的所有操作都增加了1,则您实际上会计算数组中元素的数量,因此可以执行以下操作:
$total
在echo count($pathList);
之前。 here
已更新:
如果for-loop
在循环中受到影响(在您更新问题时),那么我认为最佳实践将是首先对数组元素进行计数(不执行任何其他代码),然后回显$total
,之后,循环处理原始数据并执行其余代码。
$total
这可能会在$total = 0;
foreach($pathList as $item) {
$fileInfo = pathinfo($item);
if(preg_match(strtolower('/\b'.$_POST['song'].'\b/'), strtolower($filename))) // or what ever condition you have to check for total
$total = $total + 1;
}
echo count($total); // give you the count you need
foreach($pathList as $item) {
// exec the rest of your code
}
上运行,但并不更糟
答案 1 :(得分:1)
不可能。行以它们在脚本中出现的顺序执行。
答案 2 :(得分:0)
循环结束时$ total的值等于count($ pathList)的值
如果在执行循环之前需要$ pathList的最后一个迭代元素的值,则可以将其回显为
echo $pathList[count($pathList)-1];