intval()小记

intval函数用于获取变量的整数值。通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。

intval() 在转换的时候,会从字符串的开始进行转换直到遇到一个非数字的字符。即使出现无法转换的字符串,intval() 不会报错而是返回 0

例如:

var_dump(intval('2')); // 2
var_dump(intval('3abcd')); // 3
var_dump(intval('abcd')); // 0

var_dump(0 == '0'); // true
var_dump(0 == 'abcdefg'); // true
var_dump(0 === 'abcdefg'); // false
var_dump(1 == '1abcdef'); // true

if(intval($a) > 1000) {
    mysql_query("select * from news where id=".$a);
}

字符串形式输入

var_dump(intval(‘1000000000’)) //int(1000000000)
var_dump(intval(‘10000000000’)) //int(2147483647)
var_dump(intval(‘100000000000’)) //int(2147483647)

数值形式输入

var_dump(intval(1000000000)) //int(1000000000)
var_dump(intval(10000000000)) //int(1410065408)
var_dump(intval(100000000000)) //int(1215752192)
var_dump(intval(1000000000000)) //int(-727379968)
var_dump(intval(10000000000000)) //int(1316134912)
var_dump(intval(100000000000000)) //int(276447232)
var_dump(intval(1000000000000000)) //int(-1530494976)
var_dump(intval(10000000000000000)) //int(1874919424)
var_dump(intval(100000000000000000))//int(1569325056)
var_dump(intval(1000000000000000000))//int(-1486618624)
var_dump(intval(10000000000000000000))//int(0)
var_dump(intval(100000000000000000000))//int(0)
看到的不正常的输出因为溢出

var_dump(intval(‘2e2’)) //int(2)字符串形式输入
var_dump(intval(‘2e2’+1)) //int(201)数值形式输入
var_dump(intval(‘2e22’+1)) //int(0)数值形式输入溢出

var_dump(intval(‘0x2’)) //int(0)字符串形式输入
var_dump(intval(‘0xa’+1)) //int(11)数值形式输入(此漏洞php7被修复)
var_dump(intval(‘0xaffffffffff’+1))//int(0)数值形式输入溢出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值