以下代码获取目录中所有.csv文件的列表。我创建了函数 csvcolumnsum 来从每个文件中提取一些信息(第3列中所有值的总和)并将其注入每个列表项中。
html输出应该如下所示:
<li>Filename (sum)</li>
但它是这样的:
sum<li>Filename ()</li>
任何人都可以指出为什么会这样吗?这是相关的代码。
require("csvcolumnsum.php");
echo "<ul class=\"users\">";
$handle=opendir("data");
while (($file = readdir($handle))!==false) {
$file = preg_replace("/\\.[^.\\s]{3}$/","",$file);
if (preg_match('/[^\.]/i', $file)) {
$value = csvcolumnsum("data/".$file.".csv",3);
echo "<li><a href=\"?form_name=$file\">$file(";
echo $value;
echo ")</a></li>";
}
}
closedir($handle);
echo "</ul>";
csvcolumnsum.php
function csvcolumnsum($filename,$col) {
$handle2 = fopen($filename, 'r');
$data = fgetcsv($handle2);
foreach ($data as $headercolumn) {}
while ($data = fgetcsv($handle2)) {
$sum += $data[$col];
}
echo "<span>$sum</span>";
fclose($handle2);
}
答案 0 :(得分:2)
这不是echo
的工作原理。如果您希望函数将值传递回调用函数,则函数需要return
值,而不是echo
:
return "<span>$sum</span>";
Echo直接写入标准输出,意思是这一行:
$value = csvcolumnsum("data/".$file.".csv",3);
在这些行之前打印:
echo "<li><a href=\"?form_name=$file\">$file(";
echo $value;
echo ")</a></li>";
在当前函数中返回暂停执行,这意味着您的close
需要在return
之前发生:
function csvcolumnsum($filename,$col) {
$handle2 = fopen($filename, 'r');
# ...
fclose($handle2);
return "<span>$sum</span>";
}
答案 1 :(得分:1)
您echo
return
函数csvcolumnsum
{{1}} {/ 1}}。{/}
答案 2 :(得分:1)
你回复你必须归还的金额,
function csvcolumnsum($filename,$col) {
$handle2 = fopen($filename, 'r');
$data = fgetcsv($handle2);
foreach ($data as $headercolumn) {}
while ($data = fgetcsv($handle2)) {
$sum += $data[$col];
}
return "<span>$sum</span>";
fclose($handle2);
}