位置(根路径\source\function\function_core.php)。返回字节数。这个函数比较简单,知道换算规则就可以设计算法了。在上传文件的时候,经常用到,文件大小比对。换算规则:1G=1024M=1024*1024K=1024*1024*1024B。这种换算规则和传统的规则不同,传统的都是都是整数的倍数。如1米等于100厘米。而此种换算规则是基于2的次方,如1G=2^10M。B 字节,KB 千字节,MB 兆,GB 吉兆,TB 太兆。function return_bytes($val) { $val = trim($val); $last = strtolower($val{strlen($val)-1}); switch($last) { case 'g': $val *= 1024; case 'm': $val *= 1024; case 'k': $val *= 1024; } return $val;}
工具/原料
discuz
方法/步骤
1
$val = trim($val); $val去掉首尾两边空格,再赋值给$val,这句检查很有必要,有空格会造成结果错误。
2
$last = strtolower($val{strlen($val)-1}); strlen($val)-1字符串总长度减一。$val{strlen($val)-1}这句比较有意思,和函数substr功能类似。不过小编更喜欢substr,因为这样更容易理解。strtolower字符串转换成小写。若$val=’123M’,执行这句返回$last=’m’。
3
switch($last) { case 'g': $val *= 1024; case 'm': $val *= 1024; case 'k': $val *= 1024;} switch没有break中断。这样有他独特的特点。如$last=’m’,执行从第二个case开始,然后执行第三个case。设计挺巧妙的,单位从大到小,不过也有那么一兜兜难理解。记得小编刚开始编程时候用的是if,每个if对应一个换算彼此木有关系。
4
那么问题来了,只能处理G,M,K,还有T没处理。如果传入T,从代码上看被当做G处理有了,BUG哟。