变量类型
在PHP中支持八种变量类型,其中标量类型四种,复合类型两种,还有两种特殊类型。如图所示。
变量类型通常不是由程序员设定的,准确地说,是由PHP根据该变使用的上下文在运行时决定的。如果只是判断某个变量的类型可使用is_*()函数,若想查看某个变量的值和类型可使用var_dump(),手册上说不推荐使用gettype()函数来检测某种类型,因为其返回的字符串在未来的版本中可能会改变,还有就是此函数包含字符串比较,运行也是比较慢的,可以使用is_*函数代替。
<?php
//PHP查看变量类型的函数。
$str = "string";
echo gettype($str); // 输出string 注:此函数不推荐使用
var_dump($num); // 输出int(22)
//PHP检测变量类型常用的函数。
is_array(); // 判断是否是数组,返回值为true和false
is_bool(); // 判断变量类型是否是布尔型,返回值为true和false
is_float(); // 判断是否是浮点类型,返回值为true和false
is_double(); // 判断变量类型是否为倍浮点数类型,返回值为true或者false。
is_integer(); // 此函数是is_int()的别名函数,判断变量是否是数字,返回值为true或是false
is_null(); // 判断变量是否为null,返回值为true或是false
is_numeric(); // 判断变量是否是数字或数字字符串(如表单输入,它们通常为字符串)
is_object(); // 判断变量是否是
is_resource(); // 判断变量是否是资源类型
is_scalar(); // 检测变量是否是一个标量,返回值为true或者false
is_string(); // 检测变量是否是字符串,返回值为true或者false
类型转换
在PHP中可以根据变量或值的使用环境自动将其转换为最合适的数据类型,也可以根据需要强制转换为用户指定的类型。所以在PHP中如果没有明确地要求类型转换,都是使用默认的类型自动转换。通常只有4种标量类型(integer、float、string、boolean)才使用自动类型转换。
允许的强制转换有: (int), (integer)-转换为 整型(integer) (bool), (boolean)-转换为 布尔型(boolean) (float), (double), (real)-转换为 浮点型(float) (string)-转换为 字符串(string) (binary)-转换为二进制 字符串(string) (PHP6) (array)-转换为 数组(array) (object)-转换为 对象(object) (unset)-转换为 NULL (PHP5)
PHP数据转换有三种转换方式:
1.在要转换的变量前上加用括号括起来的目标类型。
<?php
//PHP强制类型转换
$str = "12";
$num = (int)$str;
var_dump($num); //输出int(12)
2.使用具体的转换函数,intval()、floatval()、strval()。
<?php
//PHP强制类型转换
$str = "12.34";
$i = intval($str);
$f = floatval($str);
var_dump($i); //int(12)
var_dump($f); //float(12.34)
3.使用setType()函数来设置变量的类型。
<?php
//PHP强制类型转换
$str1 = "12.34";
$str2 = "12.34";
//setType()函数返回true或false。标识类型设置是否成功.
$i = settype($str1,'int');
$f = settype($str2,'float');
var_dump($str1); //int(12)
var_dump($str2); //float(12.34)