php 数据类型和数据类型转化
2023-01-15 本文已影响0人
暴躁程序员
一、数据类型
- 基础数据类型
String 字符串
Integer 整型
Float 浮点型
Boolean 布尔型
- 复合数据类型
Array 数组
Object 对象
- 特殊数据类型
NULL 空值
Resource 资源类型
二、获取数据类型
echo gettype('1'); // string
echo gettype(1); // integer
echo gettype(1.1); // double
echo gettype(false); // boolean
echo gettype(null); // NULL
echo gettype([1]); // array
三、打印数据类型和值
var_dump('1'); // string(1) "1"
var_dump(1); // int(1)
var_dump(1.1); // float(1.1)
var_dump(false); // bool(false)
var_dump(null); // NULL
var_dump([1]); // array(1) { [0]=> int(1) }
四、数据类型判断
is_string() 是否是字符型
is_bool() 是否是布尔型
is_int() 是否是整型
is_float() 是否是浮点型
is_array() 是否是数组
is_object() 是否是对象
is_null() 是否是null
is_resource() 是否是资源型
is_numeric() 是否是数字,包括字符型数字
五、数据类型转化
1. 自动类型转化(只有基础类型可参与转化)
- 参与计算时,自动转化为整型和浮点型
- 数字类型字符串转化为对应的整型或者浮点型,空字符和其他字符不能转化
- true、false、null 转化为整型的结果分别为1、0、0
echo '100.1' + '100.2'; //字符串自动转化为数字,结果为:200.3
echo true + '100'; //布尔值自动转化为数字,结果为:101
echo null + '100'; //null 自动转化为数字,结果为:100
- 作为判断条件,自动转化为布尔类型
除了0、0.0、'0'、空字符串、null、空数组 自动转化为布尔类型是false,其他都是true
echo '' == false ?'yes':'no'; //yes
echo '1' == true ?'yes':'no'; //yes
echo '0' == false ?'yes':'no'; //yes
echo 1 == true ?'yes':'no'; //yes
echo 0 == false ?'yes':'no'; //yes
echo 0.0 == false ?'yes':'no'; //yes
echo null == false ?'yes':'no'; //yes
echo [0] == true ?'yes':'no'; //yes
echo [] == false ?'yes':'no'; //yes
- 参与字符串拼接时,自动转化为字符串类型
- 整型和浮点型转化为数字类型字符串
- true 转化为 '1',false 转化为空字符串
- null 转化为空字符串
echo 0 . 100; //0100
echo '0' . true . false . true; // 011
echo null . 100; // 100
echo '' . 100; //100
2. 强制类型转化
- 在变量之前加上括号变量类型
- 强转为整型
(integer) 或者 (int)
$a = true;
echo (integer)$a; // 1
echo gettype((integer)$a); // integer
echo (int)$a; // 1
echo gettype((int)$a); // integer
- 强转为浮点型
(float) 或者 (double)
$a = '1';
echo (float)$a; // 1
echo gettype((float)$a); // double
echo (double)$a; // 1
echo gettype((double)$a); // double
- 强转为字符型
(string)
$a = true;
echo (string)$a; // 1
echo gettype((string)$a); // string
- 强转为布尔型
(bool) 或者 (boolean)
$a = '1';
echo (bool)$a; // 1
echo gettype((bool)$a); // boolean
echo (boolean)$a; // 1
echo gettype((boolean)$a); // boolean
- 强转为数组
(array)
$a = '1';
print_r((array)$a); // Array ( [0] => 1 )
echo gettype((array)$a); // array
- 强转为对象
(object)
$a = '1';
print_r((object)$a); // stdClass Object ( [scalar] => 1 )
echo gettype((object)$a); // object
- 使用 settype(变量,'变量类型') 设置变量类型
$a = '1';
settype($a,'boolean');
echo($a); // 1
echo(gettype($a)); // boolean