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

PHP函数在错误的位置插入值,php,Php,下面的代码获取目录中所有.csv文件的列表。我创建了函数csvcolumnsum,从每个文件中提取一些信息(第3列中所有值的总和),并将其注入到每个列表项中 html输出应如下所示: <li>Filename (sum)</li> sum<li>Filename ()</li> 文件名(总和) 但结果是这样的: <li>Filename (sum)</li> sum<li>Filename ()</

下面的代码获取目录中所有.csv文件的列表。我创建了函数csvcolumnsum,从每个文件中提取一些信息(第3列中所有值的总和),并将其注入到每个列表项中

html输出应如下所示:

<li>Filename (sum)</li>
sum<li>Filename ()</li>
  • 文件名(总和)
  • 但结果是这样的:

    <li>Filename (sum)</li>
    
    sum<li>Filename ()</li>
    
    sum
  • 文件名()
  • 有人能指出为什么会发生这种情况吗?这是相关代码

    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>";
    
    require(“csvcolumnsum.php”);
    echo“
      ”; $handle=opendir(“数据”); while(($file=readdir($handle))!==false){ $file=preg\u replace(“/\\.[^.\\s]{3}$/”,“”,$file); if(preg_匹配('/[^\.]/i',$file)){ $value=csvcolumnsum(“数据/”$file..csv“,3); 回声“
    • ”; } } closedir($handle); 回声“
    ”;
    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);
    }
    
    函数csvcolumnsum($filename,$col){
    $handle2=fopen($filename,'r');
    $data=fgetcsv($handle2);
    foreach($headercolumn数据){}
    而($data=fgetcsv($handle2)){
    $sum+=$data[$col];
    }
    回音“$sum”;
    fclose(handle2美元);
    }
    
    这不是
    echo
    的工作方式。如果希望函数将值传回调用函数,则函数需要
    返回值,而不是
    回显值:

    return "<span>$sum</span>";
    
    在这些行之前打印:

    echo "<li><a href=\"?form_name=$file\">$file(";
    echo $value;
    echo ")</a></li>";
    

    csvcolumnsum
    函数中,您正在
    echo
    ing而不是
    return
    ing。

    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);
    }
    
    函数csvcolumnsum($filename,$col){
    $handle2=fopen($filename,'r');
    $data=fgetcsv($handle2);
    foreach($headercolumn数据){}
    而($data=fgetcsv($handle2)){
    $sum+=$data[$col];
    }
    返回“$sum”;
    fclose(handle2美元);
    }
    
    您应该查阅有关PHP或一般语言工作原理的教程。试图将某些内容“回显”到父函数,这表明对这里发生的事情有着深刻的误解。