未显示目录中文件的PHP文件大小

未显示目录中文件的PHP文件大小,php,foreach,glob,filesize,Php,Foreach,Glob,Filesize,我想显示表中目录中每个文件的文件大小。 但无法显示文件的大小 这是我使用的代码: $dir = 'audio'; $files = array_slice(scandir('audio'), 2); sort($files, SORT_NATURAL | SORT_FLAG_CASE); $size = (glob("audio/*.mp3")); echo "<table border><tr><th>

我想显示表中目录中每个文件的文件大小。 但无法显示文件的大小

这是我使用的代码:

$dir    = 'audio';

$files = array_slice(scandir('audio'), 2);
sort($files, SORT_NATURAL | SORT_FLAG_CASE);

$size = (glob("audio/*.mp3"));
        
echo "<table border><tr><th>Dateiname</th><th>Dateingröße</th></tr>";
    foreach ($files as $file) {
        echo 
        "<tr>
            <td>
                <a href='audio/" . $file . "'target='_blank'>" . $file . "</a>
            </td>
            <td>" . filesize($size) . " Byte
            </td>
        </tr>";
    }
echo "</table>";
$dir='audio';
$files=array_slice(scandir('audio'),2);
排序($files,sort_NATURAL | sort_FLAG_CASE);
$size=(glob(“audio/*.mp3”);
回声“Dateinamedatingrö223ße”;
foreach($files作为$file){
回响
"
“.filesize($size)。”字节
";
}
回声“;

有人能告诉我如何解决这个问题,这样大小就显示在第二个表列中吗?

文档会告诉您返回一个
数组,而需要一个
字符串,更准确地说,是执行
stat()
调用的文件名

您正在相对目录('audio')中循环文件列表,而
scandir()
将只返回文件名。要获取由
scandir()
返回的每个文件的文件大小,必须传递文件的(相对)路径。也就是说,包括它的父目录

更改此项:

filesize($size)

为此:

文件大小(“音频/$file”)


它应该可以工作(未经测试)。

您似乎对每个函数的实际功能和返回有点困惑

这是代码的一个工作版本,我删除了一些部分,因为它们在做同样的事情。当您在数组
$files
中循环时,您在一个只接受字符串
filesize()
的函数中的循环中使用了另一个数组
$size


不应该是
filesize($file)
$size
是数组,没有
filesize
值。@NigelRen,这不起作用,因为
filesize()
需要一个指向被扫描的
audio
目录中的文件的完整路径。请详细说明失败原因,而不是“无法显示”。你有错误吗?这是怎么一回事?你会得到意想不到的结果吗?那是什么?
<?php

$files = (glob("audio/*.mp3"));
sort($files, SORT_NATURAL | SORT_FLAG_CASE);

echo "<table border><tr><th>Dateiname</th><th>Dateingröße</th></tr>";
foreach ($files as $file) {
    echo
        "<tr>
            <td>
                <a href='".$file."'target='_blank'>".basename($file)."</a>
            </td>
            <td>".filesize($file)." Byte
            </td>
        </tr>";
}
echo "</table>";