discuz 函数return_bytes源码分析
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哟。