PHP 变量处理函数

PHP intval() 函数返回变量的整数值,使用指定的基数进行转换(默认为以 10 为基数,即10进制)。

我们常用该函数来将字符串转为整数类型,防止简单的sql注入。

语法

intval(variable, base) 

参数

variable必需。 指定要检查的变量。必须是标量类型。
base可选。 指定转换的基数。如果基数未指定或为 0,则使用的基数由变量的格式确定:
  • 如果变量包含"0x"(或" 0X")前缀,基数取16(十六进制)
  • 如果变量以"0"开头,基数取8(八进制)
  • 基数取10(十进制)。

返回值

返回value 的整数值表示成功, 0 表示失败。空数组返回0,非空数组返回1。

最大值取决于系统。 32 位系统的最大有符号整数范围为 -2147483648 到 2147483647。64 位系统的最大有符号整数值为 9223372036854775807。

字符串很可能返回 0,尽管这取决于字符串最左边的字符。如果字符串是数字或前导数字,则它将解析为相应的整数值,否则将转换为 0。

注意:如果对象是传递给此函数,它会抛出 E_NOTICE 级别错误并返回 1。

示例:

下面的示例显示intval() 函数的用法。

<?php
echo 'intval(10):        '.intval(10)."\n";
echo 'intval(10.5):      '.intval(10.5)."\n";
echo 'intval("10"):      '.intval("10")."\n";
echo 'intval("+10"):     '.intval("+10")."\n";
echo 'intval("-10"):     '.intval("-10")."\n";
echo 'intval(042):       '.intval(042)."\n";
echo 'intval("042"):     '.intval("042")."\n";
echo 'intval(1e10):      '.intval(1e10)."\n";
echo 'intval("1e10"):    '.intval("1e10")."\n";
echo 'intval(0x1A):      '.intval(0x1A)."\n";
echo 'intval("0x1A"):    '.intval("0x1A")."\n";
echo 'intval(true):      '.intval(true)."\n";
echo 'intval(false):     '.intval(false)."\n";
echo 'intval(42, 8):     '.intval(42, 8)."\n";
echo 'intval("42", 8):   '.intval("42", 8)."\n";
echo 'intval("Hello10"): '.intval("Hello10")."\n";
echo 'intval("10Hello"): '.intval("10Hello")."\n";
echo 'intval("10.5Hi"):  '.intval("10.5Hi")."\n";
?> 

上述代码的输出将是:

intval(10):        10
intval(10.5):      10
intval("10"):      10
intval("+10"):     10
intval("-10"):     -10
intval(042):       34
intval("042"):     42
intval(1e10):      10000000000
intval("1e10"):    10000000000
intval(0x1A):      26
intval("0x1A"):    0
intval(true):      1
intval(false):     0
intval(42, 8):     42
intval("42", 8):   34
intval("Hello10"): 0
intval("10Hello"): 10
intval("10.5Hi"):  10 

示例:

再考虑一个示例,演示如何使用此函数数组和大数。

<?php
$arr1 = array();
echo intval($arr1)."\n";

$arr2 = array(1, 2, 3);
echo intval($arr2)."\n";

echo intval(420000000000000000000)."\n";
echo intval('420000000000000000000')."\n";
?> 

上述代码的输出将是:

0
1
-4275113695319687168
9223372036854775807