關於intval函式的特性

2022-03-13 21:51:36 字數 1233 閱讀 5444

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是關鍵。由此的事情遠沒有完成,先在這裡記下,探索也是部分的需要計畫的 事情源於之前做的乙個分類問題,由於牽涉了新...