<?php
/*
我们的 php.ini 包含了以下的设置:
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 ) {
// 自 PHP 5.1.0 起可以使用修饰符 'G'
case 'g' :
$val *= 1024 ;
case 'm' :
$val *= 1024 ;
case 'k' :
$val *= 1024 ;
}
return $val ;
}
/*输出为以下内容
display_errors =
register_globals =
post_max_size = 8M
post_max_size+1 = 9
post_max_size in bytes = M
*/
?>1. "post_max_size+1"这个变量为什么会是9?难道字符串与整型相加字母会自动转为0?2. 注释掉switch语句后,$last为什么会输出m? 3. $last = strtolower ( $val [ strlen ( $val )- 1 ]); 为什么$val是[strlen ( $val )- 1],而不是(strlen ( $val )- 1)?[],()这两种括号有什么区别?
1 回答
已采纳
qq_青枣工作室_0
TA贡献446条经验 获得超754个赞
1. 你的post_max_size="8M", 跟数字相加时,会尝试把字符串转为数字,并且只转字符串的前面数字部分,所以就把"8M"转为8了。8+1=9。
2. 注释掉switch,$val值没修改,原样输出"8M"
3. 字符串可以像数组那样,通过索引来获取单个字符。$val[strlen($val)-1],就是获取$val的最后一个字符,"8M"的最后一个字符就是"M"。
而你说的$val(...)是函数调用的语法,调用$val这个函数。但这里$val并不是函数。
添加回答
举报
0/150
提交
取消