反正有没有获取文件大小的平均值? -PHP

问题描述 投票:-1回答:3

我想获取几个文件的filesize(),然后我要显示它们的平均值我在这里有一个代码将文件大小从字节转换为KB,MB和Gb:

function formatSizeUnits($bytes)
{
    if ($bytes >= 1073741824)
    {
        $bytes = number_format($bytes / 1073741824, 2) . ' GB';
    }
    elseif ($bytes >= 1048576)
    {
        $bytes = number_format($bytes / 1048576, 2) . ' MB';
    }
    elseif ($bytes >= 1024)
    {
        $bytes = number_format($bytes / 1024, 2) . ' KB';
    }
    elseif ($bytes > 1)
    {
        $bytes = $bytes . ' bytes';
    }
    elseif ($bytes == 1)
    {
        $bytes = $bytes . ' byte';
    }
    else
    {
        $bytes = '0 bytes';
    }

    return $bytes;
}

我想以此得到几个文件的平均值。可能吗?如果是,请帮助我。

php
3个回答
1
投票

您将执行以下操作:

$totalSize = 0;
$files = ['file1.txt', 'file2.txt'];

foreach( $files as $file ) {

    $totalSize += filesize( $file );

}

$averageSize = $totalSize / count( $files );

echo formatSizeUnits( $averageSize );

1
投票

您的问题非常模棱两可。根据我的理解,您可以添加所有文件的字节,例如:

$file_one = filesize('fileone.php');
$file_two = filesize('filetwo.php');
$average = ($file_one + $file_two) /2 ;

然后将其运行到formatSizeUnits功能。喜欢:

echo formatSizeUnits($average);

希望可以帮助您解决问题。


0
投票

这不是您问题的答案,但是您可以使函数短一些

function formatSizeUnits($bytes) {
    if ( $bytes === 1 ) {
        return '1 byte';
    }
    $sizes = ['bytes', 'KB', 'MB', 'GB'];
    $power_10_of_2 = 1024;
    $ind = 0;
    while ( $bytes >= $power_10_of_2 ) {
        $bytes = number_format($bytes / $power_10_of_2, 2, '.', '');
        $ind++;
    }
    return $bytes . ' ' . $sizes[$ind];
}
© www.soinside.com 2019 - 2024. All rights reserved.