02_PHP 数据类型

1. PHP 数据类型

  • 1. PHP 数据类型
    • 1.1. String(字符串)
    • 1.2. Integer(整型)
    • 1.3. Float(浮点型)
    • 1.4. Boolean(布尔型)
    • 1.5. Array(数组)
    • 1.6. Object(对象)
    • 1.7. resource(资源)
    • 1.8. NULL(空值)
    • 1.9. 数据类型检测
    • 1.10. 数据类型获取
    • 1.11. 数据类型转换
      • 1.11.1. 自动类型转换
      • 1.11.2. 强制类型转换


PHP的数据类型主要分为三大类:

  • 标量数据类型
    • String(字符串)
    • Integer(整型)
    • Float(浮点型)
    • Boolean(布尔型)
  • 复合数据类型
    • Array(数组)
    • Object(对象)
  • 特殊数据类型
    • resource(资源)
    • NULL(空值)

标量数据类型是数据结构中最基础的单元,只能存储一个数据。

1.1. String(字符串)

字符串是由连续的字母、数字或字符组成的字符序列。
PHP提供了4种表示字符串的方式,分别为单引号、双引号、heredoc语法结构和nowdoc语法结构(定界符<<<)。

① 单引号和双引号区别如下。

  • ""双引号里面的变量会经过编译器解析,然后再输出。
  • ''单引号里面的变量不进行解析,直接输出,因此单引号比双引号执行得要快了。

例如:

$number= 100;
echo '$number=', $number; //结果是:$number=100
echo "$number=", $number; //结果是:100=100

说明
: 在定义字符串时,如果没有特别的要求,应尽量使用单引号。

  • 对转义字符的使用

双引号中可以通过“\”转义符输出的特殊字符如下:

转义序列 字符
\n 换行符
\r 回车符
\t 制表符Tab
\\ 反斜杠
\$ 美元符号
\" 双引号

单引号中可以通过“\”转义符输出的特殊字符只有:

转义序列 字符
\\ 反斜杠
\' 单引号

②heredoc和nowdoc语法结构(定界符<<<)

heredoc和nowdoc的语法结构都是:

以“<<<”开始,
后面紧跟开始标识符名称,
结束时所引用的标识符名称与开始标识符名称要相同,以分号结尾。

<<

heredoc和nowdoc结构的使用具有以下几个特点:

  • 开始标记和结束标记使用相同的字符串,通常以大写字母来写。
  • 开始标记后不能出现空格或多余的字符。
  • 结束标记必须顶头写,不能有缩进和空格。
  • heredoc结构中的变量会被解析,变量不需要用连接符“.”来拼接。

heredoc和nowdoc结构的语法区别是:

  • 开始标识符名称,heredoc没有引号,nowdoc必须要使用单引号进行包裹。
  • heredoc结构中的变量会被解析,类似双引号;nowdoc结构中的变量会被原样输出,类似单引号。
$name 是世界上最好的语言!

EOD; echo $heredoc; //输出:PHP 是世界上最好的语言! $nowdoc = <<<'EOD'

$name 是世界上最好的语言!

EOD; echo $nowdoc; //输出:$name 是世界上最好的语言! ?>

字符串操作详细见字符串章节

1.2. Integer(整型)

整型数据只能包含整数。

整型数据的规则是:

  • 整型数据必须至少有一个数字(0~9)。
  • 整型数据不能包含逗号或空格。
  • 整型数据没有小数点。
  • 整型数据可以是正数或负数。

整型数据可以用3种格式来指定,
即十进制、十六进制(前缀为0x)和八进制(前缀为0)。

$oct = 012;  //八进制
$dec = 10;   //十进制
$hex = 0xa;  //十六进制

注意,在PHP 7版本中,含有十六进制字符的字符串不再被视为数字,而是当作普通的字符串。

1.3. Float(浮点型)

浮点型数据既可以用来存储整数,也可以用来存储小数和指数。


1.4. Boolean(布尔型)

布尔型数据只有两个,即true和false,布尔型变量通常用于条件判断语句中。

其他的数据类型基本都有布尔属性:

数据类型 true false
整型 非0 0
浮点型 非0 0.0
字符串型 非空非零 ''空字符串或'0'字符串
数组型 包括元素 不含任何元素
对象型 永远为true
资源型 永远为true
NULL型 永远为false

1.5. Array(数组)

数组是一系列数据集合起来形成的一个可操作的整体,一系列数据可以包括标量数据、对象、资源以及PHP中支持的其他语法结构等。

一般把数组中的单个数据称为元素,元素又被分为索引(键名)和值两部分。
索引(键名)可以是数字或者字符串,值可以是任何数据类型。

在PHP中,通常使用array()创建数组或直接赋值。准确来说,array()是一种结构而不是一个函数,具体格式如下:

$array1 = array('val1','val2','val3'...);
$array2 = array(key1 => 'val1', key2 => 'val2', key3 => 'val3',...);
$array[key1] = 'val1';

数组具体详细见数组章节

1.6. Object(对象)

编程语言所应用到的方法有两种:面向过程和面向对象。在PHP中,用户可以自由使用这两种方法。

对象数据类型也可以用于存储数据。在PHP中,对象必须声明。首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。然后在类中定义数据类型,在实例化的类中使用数据类型。

1.7. resource(资源)

资源是一种特殊的变量类型,又叫作句柄,它是通过专门的函数来创建和使用的。资源可以被进行操作,如创建、使用和释放等。任

何资源,在不需要的时候都应该被及时释放。系统也会自动启用垃圾回收机制,在页面执行完毕后回收资源,以避免内存被消耗殆尽。

在编程过程中,资源类型却是几乎永远接触不到的。

1.8. NULL(空值)

空值,顾名思义,表示没有为该变量设置任何值。

被赋予空值的情况有以下3种:

  • 还没有赋任何值
  • 被赋值null
  • 被unset()函数处理过的变量。

1.9. 数据类型检测

PHP内置了检测数据类型的系列函数,可以对不同类型的数据进行检测,判断其是否属于某个类型,如果符合则返回true,否则返回false。

检测数据类型的函数如表:

函数 检测类型 举例
is_bool() 是否为布尔类型 is_bool(srue) , is_bool(false)
is_string() 是否为字符串型 is_string(‘string’) , is_string(1234)
is_float()/is_double() 是否为浮点型 is_float(3.1415) , is_float(‘3.1415’)
is_integer()/is_int() 是否为整型 is_integer(34) , is_integer(‘34’)
is_null() 是否为空值 is_null(null)
is_array() 是否为数组 is_array($arr)
is_object() 是否为一个对象 is_object($obj)
is_numeric() 是否为数字或由数字组成的字符串 is_numeric(‘5’) , is_numeric(‘bcc110’)

1.10. 数据类型获取

1.如果想查看某个表达式的值和类型,用var_dump()。
2.如果只是想得到一个易读懂的类型的表达方式用于调试,用 getType()。
3.要查看某个类型,不要用 gettype(),而用is_type() 函数。

1.11. 数据类型转换

PHP虽然是弱类型语言,但有时也需要用到类型转换。在PHP数据类型的转换主要有以下2种转换方式。

1.11.1. 自动类型转换

所谓自动类型转换,指的是当运算需要或与期望的结果类型不匹配时,PHP将自动进行类型转换,无需开发人员做任何操作。

在程序开发过程中,最常见的自动类型转换有3种,分别为转换成布尔型、转换成整型和转换成字符串型。在各个类型进行自动转换时需要注意以下几点。

  • 转换成布尔类型值时,null,整型值0、浮点型值0.0、空字符串以及字符串“0”都会被转为false,其他值会被转为true。
  • 布尔型转换成整型时,布尔值true转换成整数1;布尔值false转换成整数0。
  • 浮点数转换成整数时,小数部分去掉,将向下取整。
  • 字符串型转换为整型时,若字符串是以数字开始,则使用该数值,否则转换为0。
  • 布尔型转换成字符串时,布尔值true转换成字符串“1”;布尔值false转换成空字符串。
  • 整型或浮点型转换成字符串时,直接将数字转换成字符串形式。

1.11.2. 强制类型转换

所谓强制类型转换,就是在编写程序时手动转换数据类型,主要有以下三种转换方式。

1)在要转换的变量之前加上用括号括起来的目标类型。这种方法只需在变量前面加上用括号括起来的类型名称即可,允许转换的类型如表:

函数 检测类型 举例
(int),(integer) 转换成整型 (int)boo
(bool),(boolean) 转换成布尔 (bool)str
(float),(double),(real) 转换成浮点 (float)$str
(string) 转换成字符 (string)$boo
(array) 转换成数组 (array)$str
(object) 转换成对象 (object)$str

2)使用三个具体类型的转换函数,intval()、floatval()、strval()。其中,intval()函数用于转换为整型,floatval()函数用于转换为浮点型,strval()函数用于转换为字符型。


3)使用函数settype()进行转换。settype()函数用于设置变量的数据类型,该函数可以将指定的变量转换成指定的数据类型。

bool settype (mixed $var,string type)


你可能感兴趣的:(02_PHP 数据类型)