<?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
提交
取消