# 数据类型

虽然 PHP 是一门弱类型语言,在声明和使用变量的时候,并不需要指明其数据类型,但是也应该了解它的数据类型!

以下是 PHP5 数据类型:

  • String(字符串)
  • Integer(整型)
  • Float(浮点型)
  • Boolean(布尔型)
  • Array(数组)
  • Object(对象)
  • NULL(空值)

# 数据类型之间的转化

# 方式一

方式一:在要转换的变量之前加上用括号括起来的目标类型。

可以使用以下转化类型:

  • (int)、(integer):转换成整形
  • (float)、(double)、(real):转换成浮点型
  • (string):转换成字符串
  • (bool)、(boolean):转换成布尔类型
  • (array):转换成数组
  • (object):转换成对象

比如:

$num1 = 3.14;
$num2 = (int)$num1;
var_dump($num1); // 输出float(3.14)
var_dump($num2); // 输出int(3)

# 方式二

方式二:使用3个具体类型的转换函数,intval()、floatval()、strval()

比如:

$str = "123.9abc";
$int = intval($str);     // 转换后数值:123
$float = floatval($str); // 转换后数值:123.9
$str = strval($float);   // 转换后字符串:"123.9"

# 方式三

第三种转换方式:settype()

$num4 = 12.8;
$flg = settype($num4,"int");
var_dump($flg);  // 输出bool(true)
var_dump($num4); // 输出int(12)

参考:

# 检测数据类型

# 方式一

方式一:输出变量的数据类型(gettype)

$arr = array('a','b','c');
echo gettype($arr); // array

gettype 会根据 参数类型返回下列值

  • boolean(从 PHP 4 起)
  • integer
  • double(如果是 float 则返回 double,而不是 float)
  • string
  • array
  • object
  • resource(从 PHP 4 起)
  • NULL(从 PHP 4 起)
  • unknown type

# 方式二

方式二:输出变量的数据类型、包含的数量以及具体内容,var_dump 返回变量的数据类型和值

$txt1="Hello World!";
$cars=array("Volvo","BMW","Toyota");
$x = 11;
$y = 22.22;
$z = null;
$b = true;
var_dump($txt1); echo "<br>"; // string(12) "Hello World!"
var_dump($cars); echo "<br>"; // array(3) { [0]=> string(5) "Volvo" [1]=> string(3) "BMW" [2]=> string(6) "Toyota" }
var_dump($x); echo "<br>"; // int(11)
var_dump($y); echo "<br>"; // float(22.22)
var_dump($b); echo "<br>"; // bool(true)
class Car {
  function __construct($color="green") {
    $this->color = $color;
  }
  function what_color() {
    return $this->color;
  }
}
$car1 = new Car('blue');
$car2 = new Car();
var_dump($car1); echo "<br>"; // object(Car)#1 (1) { ["color"]=> string(4) "blue" }
var_dump($car2); echo "<br>"; // object(Car)#2 (1) { ["color"]=> string(5) "green" }

# 方式三

方式三:检测某个变量是否是指定的数据类型(is_array、is_string、is_int、is_double等),如果为真返回1,如果为假返回空

$num = 123;
if(is_array($num)){
  echo '这是一个数组';
}else if(is_string($num)){
  echo '这是一个字符串';
}else if(is_int($num)){
  echo '这是一个整数';
}else if(is_double($num)){
  echo '这是一个浮点数';
}

常用的类型判断函数有:

isset(): // 变量是否已经声明
empty(): // 变量是否为空
defined(): // 常量是否已经定义 define()
array_key_exists(mixed key, array search): // 检查给定的键名或索引是否存在于数组中
is_numeric (mixed var): // 检测变量是否为数字或数字字符串
is_bool(): // 检测变量是否是布尔型
is_float(): // 检测变量是否是浮点型 和 is_double() , is_real() 都一样的用法
is_int(): // 检测变量是否是整数 is_integer() 一样的用法
is_string(): // 检测变量是否是字符串
is_object(): // 检测变量是否是一个对象
is_array(): // 检测变量是否是数组
is_null(): // 检测变量是否为 NULL 值是否是 NULL 大小写敏感

# function_exists

用于判断一个函数是否存在,比如:

if (!function_exists('test')) {
  function test ($idcard) {
    return 'test';
  }
}

参考:

# empty、isset、isnull 的区别

# empty

如果变量是非空或非零的值,则 empty() 返回 FALSE。换句话说,”"、0、”0″、NULL、FALSE、array()、var $var、未定义;以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。

# isset

如果变量存在(非NULL)则返回 TRUE,否则返回 FALSE(包括未定义)。变量值设置为:null,返回也是false;

unset 一个变量后,变量被取消了。注意,isset 对于 NULL 值变量,特殊处理。

# is_null

检测传入值【值,变量,表达式】是否是 null,只有一个变量定义了,且它的值是 null,它才返回 TRUE。其它都返回 FALSE 【未定义变量传入后会出错!】

MIT Licensed | Copyright © 2018-present 滇ICP备16006294号

Design by Quanzaiyu | Power by VuePress