PHP函数在错误的位置插入值

时间:2012-05-24 14:48:18

标签: php

以下代码获取目录中所有.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);
}

3 个答案:

答案 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);
}