intval函式有個特性:直到遇上數字或正負符號才開始做轉換,再遇到非數字或字串結束時(\0)結束轉換
php_function(intval) // intval函式處理的流程
base = 10; // base為10
break;
case 2:
if (zend_get_parameters_ex(2, &num, &arg_base) == failure)
convert_to_long_ex(arg_base);
base = z_lval_pp(arg_base);
break;
default:
wrong_param_count;
}retval_zval(*num, 1, 0);
convert_to_long_base(return_value, base); //重點convert_to_long_base中的處理
}
zend/zend_operators.c->>convert_to_long_base()
……case is_string:
strval = z_strval_p(op);
z_lval_p(op) = strtol(strval, null, base); // strtol()會掃瞄字串,跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,再遇到非數字或字串結束時(\0)結束轉換,並將結果返回。
str_free(strval);
break;
當intval用在if等的判斷裡面,將會導致這個判斷失去意義!
學習文章:
PHP核心函式研究之 intval
宣告 本文為斯人 原創,全部為作者一一分析得之,有不對的地方望賜教。趁熱打鐵 順便說說 intval函式.該函式好像我們用的最多的就是在post或者get某個引數的時候,將其強制轉換為int型,為了保證我們傳入到sql的時候是乙個整形.當然這只是其中一種用法.該函式接受兩個引數,第乙個是要轉換的字串...
函式的特性
1620 7 唐大智 2016年11月9日 連續第四十天總結 內容 a 1 函式引數的預設值 c 規定,在函式允許給引數指定乙個預設值。這樣的函式稱為具有預設引數的函式。在此情況下若函式呼叫時呼叫者明確提供了實參的值,則使用呼叫者提供的實參值 若呼叫者沒有提供相應的實參,系統則使用引數的預設值。該使...
關於分類問題中的啟用函式特性影響
哈哈,先原諒這乙個月在重圍中的藉口。有幾次想起還有blogs這件事,也是覺得可能這個月沒有publication留下。結果剛才debug發現了些有趣的事情,當然,現象是表面,insight是關鍵。由此的事情遠沒有完成,先在這裡記下,探索也是部分的需要計畫的 事情源於之前做的乙個分類問題,由於牽涉了新...