can';无法从php手册示例中理解此函数(返回字节)

can';无法从php手册示例中理解此函数(返回字节),php,function,return,Php,Function,Return,我在php手册中见过这个函数,但我不理解它是如何工作的,这个函数应该将文件大小的值改为字节。 这就是整个例子 <?php /* Our php.ini contains the following settings: display_errors = On register_globals = Off post_max_size = 8M */ echo 'display_errors = ' . ini_get('display_errors') . "\n"; echo 'regi

我在php手册中见过这个函数,但我不理解它是如何工作的,这个函数应该将文件大小的值改为字节。 这就是整个例子

<?php
/*
Our php.ini contains the following settings:

display_errors = On
register_globals = Off
post_max_size = 8M
*/

echo 'display_errors = ' . ini_get('display_errors') . "\n";
echo 'register_globals = ' . ini_get('register_globals') . "\n";
echo 'post_max_size = ' . ini_get('post_max_size') . "\n";
echo 'post_max_size+1 = ' . (ini_get('post_max_size')+1) . "\n";
echo 'post_max_size in bytes = ' . return_bytes(ini_get('post_max_size'));

function return_bytes($val) {
    $val = trim($val);
    $last = strtolower($val[strlen($val)-1]);
    switch($last) {
        // The 'G' modifier is available since PHP 5.1.0
        case 'g':
            $val *= 1024;
        case 'm':
            $val *= 1024;
        case 'k':
            $val *= 1024;
    }

    return $val;
}

?>
这就是所谓的“G”修饰符,$最后一个变量是用来做什么的? 提前感谢,

$last = strtolower($val[strlen($val)-1]);
该行代码获取
$val
中的最后一个字符,将其转换为小写,然后将其放入
$last
变量中。然后在switch语句中使用该变量对输入值应用乘数


请参阅以获取一些可能对您有用的背景信息。

strlen($val)
是$val字符串的长度<因此,code>strlen($val)-1是字符串中最后一个字符的偏移量
$val[strlen($val)-1]
获取字符串中的最后一个字符<代码>$last=strtolower($val[strlen($val)-1])获取字符串中的最后一个字符,强制将其小写,并将其分配给名为
$last
的变量
G
“修饰符”是指
$val
中的值类似于
2G
(2G字节)。。。。
$last=strtolower($val[strlen($val)-1])
将返回一个字符串值
g
后续的数学运算非常危险地依赖于PHP的松散类型转换:
2G
将连续乘以1024 3次,就像2*1024*1024*1024给出的
2147483648
在ByTest中是2G字节。这真是太懒了coding@MarkBaker哦,哇。那太可怕了。有人认为这很优雅。
$last = strtolower($val[strlen($val)-1]);