PHP 数据的类型转换

PHP虽然是一门弱类型语言, 其也有自己的数据类型(八种数据类型), 只是在声明变量时无需指定变量的数据类型。

我们向变量存储什么样类型的数据, 其变量就是什么样的类型。在PHP中, 如果变量参与相关运算时, 其数据类型也会发生自动转换。

自动类型转换

在PHP中, 发生自动转换主要出现在以下四种类型中:

整型: int, integer

浮点型: float

布尔型: bool, boolean

字符串型:string

注意: 浮点数超出范围:-2147483648 ~ 2147483647 转为 整型, int, integer 不适合转换, 如: JAVA 13位毫秒时间戳

(1) 整型转布尔类型

在整型数据参数if等条件判断时, 整型数据会自动发生类型转换, 0转化为false, 其他数据转为为true。

$flag = 0;

if($flag){ //自动转换为bool形

echo "条件为真";

}else{

echo "条件为假";

}

(2) 字符串类型转整型或浮点型

在php中, 字符串类型如果参与数学运算时, 其数据类型也会自动发生变化, 转换为整型或浮点型数据。

1 如果字符串中是以整型数字开头的, 则自动转化为整型数据

$str = "123abc";

$sum = $str+1;

echo $sum;

输出结果: 124

2 如果字符串中是以浮点数字开头的, 则自动转化为浮点数据

$str = "123.34abc";

$sum = $str+1;

echo $sum;

输出结果: 124.34

3 如果字符串是以数字开头的且带有多个小数点, 则只取第一个小数点

$str = "123.34.21abc";

$sum = $str+1;

echo $sum;

输出结果: 124.34

$str = ".34.21abc";

$sum = $str+1;

echo $sum;

输出结果: 1.34

4 如果字符串不是以数字开头的, 则自动转化为数字0

$str = "abc666";

$sum = $str+5;

echo $sum;

输出结果:5

(3) 布尔类型转整型

在php中, 如果布尔类型的数据参与数学运算, 则也会发生自动转化。true则转换为1, false则转化为0

$flag = true;

$sum = $flag + 4;

echo $sum;

输出结果:5

(4) null类型转0

在PHP中,如果null参与数学运算, 其数据类型也会自动转化, 转换生成为0

$var = null;

$sum = $var + 4;

echo $sum;

输出结果:4

手工类型转换

在PHP中, 除了可以实现自动类型转换, 我们还可以手工实现数据类型转换。

<?php

$str1 = '123';

$str2 = '.1.2.3.4';

$flag = true;

$num1 = 6;

$num2 = 10.88;

var_dump((int)$str1);

var_dump((float)$str2);

var_dump((int)$flag);

var_dump((bool)$num1);

var_dump((int)$num2);

?>

判断变量的数据类型

is_bool(): 判断一个变量是否为bool类型

is_float(): 判断一个变量是否为float类型

is_integer():判断一个变量是否为integer类型

is_object(): 判断一个变量是否为object类型

is_array(): 判断一个变量是否为array类型

is_string(): 判断一个变量是否为string类型

is_resource():判断一个变量是否为resource类型

is_scalar(): 判断一个变量是否为标量类型(integer、float、bool、string)

is_null(): 判断一个变量是否为null类型

is_numeric():判断一个变量是否为数字类型(integer、float)

注意: "10.34" 返回值为true "10.34abc" 返回值为false

小窍门:在php, 以"is_"打头函数, 其返回的都是bool类型的数据(true或false)

is_numeric() 函数用于检测变量是否为数字或数字字符串。

is_int/is_integer主要是判断变量是否是整数类型, 其他类型是false

而从数据库查询到数据(1594001025) 不要使用is_int检测, 因为属于string类型, 要使用is_numeric()检测;

获取与设置变量的数据类型

gettype()

string gettype ( mixed $var ) 返回 PHP 变量的类型 var.

settype()

bool settype ( mixed &$var , string $type )将变量 var 的类型设置成 type。

$type(要设置的数据类型), 其值可以是如下几种数据类型:

"boolean" (或为"bool")

"integer"

"float"

"string"

"array"

"object"

"null"

实例:

<?php

$num1 = 10.88;

$str = 'hello world';

$num2 = 12888;

settype($num1, "integer");

settype($str, "boolean");

settype($num2, "float");

echo gettype($num1);

echo "
";

echo gettype($str);

echo "
";

echo gettype($num2);

?>

MySQL数据库查询的数据, 都是字符串类型, 不应该用于判断true和false(如价格: "0.00"), 需要进行转换后, 才能进行判断boolean。

原文链接:,转发请注明来源!