我想获取几个文件的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;
}
我想以此得到几个文件的平均值。可能吗?如果是,请帮助我。
您将执行以下操作:
$totalSize = 0;
$files = ['file1.txt', 'file2.txt'];
foreach( $files as $file ) {
$totalSize += filesize( $file );
}
$averageSize = $totalSize / count( $files );
echo formatSizeUnits( $averageSize );
您的问题非常模棱两可。根据我的理解,您可以添加所有文件的字节,例如:
$file_one = filesize('fileone.php');
$file_two = filesize('filetwo.php');
$average = ($file_one + $file_two) /2 ;
然后将其运行到formatSizeUnits
功能。喜欢:
echo formatSizeUnits($average);
希望可以帮助您解决问题。
这不是您问题的答案,但是您可以使函数短一些
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];
}