为什么我得不到文件的大小呢?
来源:2-4 文件信息相关函数封装
雨之赞歌
2019-02-13 16:00:05

3回答
您好,并不是没有得到文件大小,文件大小在输出文件相关信息之前已经输出了。而在数组中之所以看不到是因为trans_byte方法是将文件大小echo输出,应该是将值进行return,返回给size设值。
<?php
/*返回文件的详细信息
*string $filename 文件名
*/
function get_file_info(string $filename){
//判断文件是否存在或文件是否可读,不存在或不可读则终止
if (!is_file($filename) || !is_readable($filename)){
echo "文件不存在或不可读取";
return;
}
print_r([
//文件的最后访问时间
'atime'=>date('Y-m-d H:i:s',fileatime($filename)),
//文件的修改时间
'mtime'=>date('Y-m-d H:i:s',filemtime($filename)),
//文件的创建时间
'ctime'=>date('Y-m-d H:i:s',filectime($filename)),
//文件的大小
'size'=>trans_byte(filesize($filename)),
//文件的类型
'type'=>filetype($filename)
]);
}
get_file_info('1.txt');
function trans_byte(int $byte,$precision=2){
$kb=1024;
$mb=1024*$kb;
$gb=1024*$mb;
$tb=1024*$gb;
if ($byte<$kb){
return $byte.'B';
}elseif ($byte<$mb){
return round($byte/$kb,$precision).'KB';
}elseif ($byte<$gb){
return round($byte/$mb,$precision).'MB';
}elseif ($byte<$tb){
return round($byte/$gb,$precision).'GB';
}else{
return round($byte/$tb,$precision).'TB';
}
}祝学习愉快!
雨之赞歌
提问者
2019-02-13
/*返回文件的详细信息
*string $filename 文件名
*/
function get_file_info(string $filename){
//判断文件是否存在或文件是否可读,不存在或不可读则终止
if (!is_file($filename) || !is_readable($filename)){
echo "文件不存在或不可读取";
return;
}
print_r([
//文件的最后访问时间
'atime'=>date('Y-m-d H:i:s',fileatime($filename)),
//文件的修改时间
'mtime'=>date('Y-m-d H:i:s',filemtime($filename)),
//文件的创建时间
'ctime'=>date('Y-m-d H:i:s',filectime($filename)),
//文件的大小
'size'=>trans_byte(filesize($filename)),
//文件的类型
'type'=>filetype($filename)
]);
}
get_file_info('1.txt');
function trans_byte(int $byte,$precision=2){
$kb=1024;
$mb=1024*$kb;
$gb=1024*$mb;
$tb=1024*$gb;
if ($byte<$kb){
echo $byte.'B';
}elseif ($byte<$mb){
echo round($byte/$kb,$precision).'KB';
}elseif ($byte<$gb){
echo round($byte/$mb,$precision).'MB';
}elseif ($byte<$tb){
echo round($byte/$gb,$precision).'GB';
}else{
echo round($byte/$tb,$precision).'TB';
}
}
好帮手慕查理
2019-02-13
您好,同学可以将运行的代码复制粘贴进行反馈,以便运行同学的代码,测试效果,帮助同学查找问题。祝学习愉快!
相似问题