1. 数据类型

基本概念

在PHP中定义变量是不支持指定类型的,而是在其赋值后根据内容自动处理。
比如一个变量,给其赋值一个字符串,那么这个变量就是字符串类型的,随后又将其值改成一个整数型,那么这个变量也会自动变成整数型的变量。

在计算中,如果有一个变量是float类型,那么整个计算结果也将会是float类型。

原始类型

PHP中一共有 9种 原始数据类型

  • 标量类型

    • boolean(布尔值)
    • integer(整数型)
    • float(浮点型,也叫double)
    • string(字符串)
  • 复合类型

    • array(数组)
    • object(对象)
    • callable(可调用类型,如同callback回调函数)
  • 特殊类型

    • resource(资源)
    • null(无类型)

文档类型

还有一些常用于文档上的伪类型,它们并不是PHP的原生类型,只是用于文档上方便人们理解而产生的类型,所以不能在PHP里使用

  • mixed(说明参数可以是多种类型的数据)

  • number(说明参数是一个 integerfloat

  • callback(说明参数是一个回调函数)

  • array|object(说明参数可以是 arrayobject

  • void(作为返回值时表示返回值时无用的,作为参数时表示不接受任何参数)

  • ...(说明函数可以接受任意数量的参数)

判断类型

如果要 调试一个变量的类型 可以使用gettype()函数,该函数将返回类型的字符串形式。

// integer
gettype(123);
// string
gettype('123');
// boolean
gettype(true);
// double
gettype(12.45);

// string
gettype(gettype(123));

如果要 判断一个变量的类型 可以用is_type()函数,不要用gettype()

// 布尔型
is_bool(TRUE);
// 浮点数
is_float(3.14);
// 整数型
is_int(123);
// 字符串
is_string('123');

// 数组
is_array([]);
// 对象
is_object(new stdClass());
// 可调用结构
is_callable('Example::staticFunction');
// 资源
is_resource();
// NULL
is_null();

如果想查看一个变量的类型和值可以使用var_dump()print_r()等函数

类型转换

如果要将一个 变量强行当做另一种类型 来进行计算的话,可以使用强制类型转换(就是在变量前面加上(type)这种)。

// 我是整数型
$foo = 123;
// 我是字符串类型
$bar = (string)$foo;

允许强制转换的类型有:

  • (int)(integer) 可以转成整数型
  • (bool)(boolean) 可以转成布尔型
  • (float)(double)(real) 可以转成浮点型
  • (string) 可以转成字符串
  • (array) 可以转成数组
  • (object) 可以转成对象
  • (unset) 可以转成NULL
  • (binary)b 前缀 可以转成二进制

如果要将一个 变量彻底改变成另一种类型,可以使用settype()函数

下面是一个类型转换的简单例子

// 整数型变量
$temp = 123;
// Integer
echo gettype($temp) . '<br />';
// String
echo gettype((string)$temp) . '<br />';
// Integer
echo gettype($temp) . '<br />';
// 返回true
settype($temp, 'string');
// String
echo gettype($temp) . '<br />';
// string(3) "123"
var_dump($temp);

类型比较

字符串字符串 比较,判断两个字符串的Ascii值大小

参考例子

官方参考表:http://php.net/manual/zh/types.comparisons.php

例子1

// 输出1
(string)TRUE;

// 输出空字符串
(string)FALSE;

例子2

$a = TRUE;
// 输出11
echo $a++ . $a;
// 原因是 增量运算符++ 并不会将 布尔型的$a 转成整数型来进行运算
// 所以 $a++ 一直都等于 TRUE,也就是数字 1

例子3

$string = '123.456';

// 因为是 =+ 而不是 +=,所以不报错,且$float未赋值,等于null
// 任何表达式中和`float`进行计算都等于`float`
$float =+ $string;

// 位移运算,自动转成整数型
$integer = 0|$string;

// 逻辑运算,自动转成布尔型
$boolean = !!$string;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、数据类型 a.概念:什么是数据类型? 简单点儿来说,数据类型就是计算机对现实中数据的一种抽象和表示,比如现实中...
    2625K阅读 554评论 2 2
  • 01 你失恋过吗?失恋是一种什么样的感觉?传说中的失恋是痛不欲生,嚎嚎大哭,感觉被全世界遗弃。 02 传说中失恋的...
    孤单落叶阅读 623评论 1 3
  • 自古真情常离别,牛郎鹊桥苦千年。 人生苦短争朝夕,一份绵情勿迟延。
    徐一村阅读 166评论 0 4
  • 这几天在看笑来老师的《和时间做朋友》,想着“只字不差”的阅读,所以看得特别慢,以至于三四天了才看了二三十面。索性今...
    柴菲阅读 330评论 0 0
  • 话说配音大护法里小姜的小哥哥是谁啊,声音好苏啊啊啊啊啊啊啊啊啊!!!!!
    身骑白马失落沙洲阅读 110评论 0 0