PHP计算目录空间转MB后无法输出结果,求问题排查
嘿,我帮你找出代码里的几个新手坑啦!
先看你代码里的关键错误:
赋值运算符搞反了
你写的$totalSpace / 1048576 == $newValue;是比较操作(双等号==是用来判断两边是否相等的),而不是把计算结果存到$newValue里。正确的赋值得用单等号=:$newValue = $totalSpace / 1048576;变量可能未定义
你的$newValue只有在$totalSpace > 1048576的时候才会被赋值,但如果目录空间小于1MB,$newValue就根本没被创建,这时候执行echo $newValue就会直接报错,触发后面的die。echo ... or die的逻辑不对echo本身几乎不会失败,这里的die其实是因为$newValue未定义导致的报错,不是echo出问题了。
修复后的完整代码
<?php $totalSpace = disk_total_space("./") or die("Error DFS"); echo "原始字节数:" . $totalSpace . "<br>"; // 不管空间大小都先转换,避免变量未定义 $newValue = $totalSpace / 1048576; // 可以给结果保留两位小数,看起来更友好 $newValue = round($newValue, 2); echo "转换为MB:" . $newValue . " MB"; ?>
额外小提示
如果想区分小于1MB的情况,也可以加个判断,但一定要保证$newValue始终有值:
if ($totalSpace > 1048576) { $newValue = round($totalSpace / 1048576, 2) . " MB"; } else { $newValue = $totalSpace . " 字节"; } echo $newValue;
另外,1048576是二进制的1MB(10241024,也就是常说的MiB),如果是按十进制的MB(10001000)来算,就换成1000000就行,看你需求啦。
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

