文章目录
前言
数据类型在php中指的是存储的数据本身的类型,而不是变量的类型,PHP是一种弱类型语言,变量本身没有数据类型。本文介绍了PHP几种常见的数据类型【String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值),Callable(回调),Resource(资源)】。
一、String(字符串)
- 字符串是PHP简单(标准)数据类型之一。
- 一个字符串 string 就是由一系列的字符组成。
- 每个字符等同于一个字节,所以只能支持256的字符集。
- 字符串由什么值来组成并无限制,string最大可以达到2GB。
- 字符串会被按照该脚本文件相同的编码方式来编码。
- 字符串可以用 ‘.’(点)运算符连接起来。
- 字符串的四种表达方式:
1、单引号:用单引号把字符串包围起来(字符 ')。
注:使用反斜杠进行转义,要表达一个单引号自身,需在它的前面加个反斜线(\)来转义。要表达一个反斜线自身,则用两个反斜线(\)。在单引号字符串中的变量和特殊字符的转义序列将不会被替换。
2、双引号:用双引号把字符串包围起来(字符 ")。
注:对一些特殊的字符会进行解析,\n换行,\r回车,\t水平制表符,\v垂直制表符,\e ESCAPE,\f换页,\\反斜杠,\$美元标记,\"双引号
3、Heredoc:句法结构<<<,在该运算符之后要提供一个标识符,然后换行,接下来是字符串string本身,最后要用到前面定义的标识符作为结束标志。结束时所引用的标识符必须在该行的第一列,该行除了有一个分号外,不能有其他字符。类似于双引号字符串。也会进行变量解析。
4、Nowdoc:结构类似Heredoc,但是跟在后面的标识符要用单引号括起来,如:<<<‘Ex’。类似于单引号字符串,不进行解析操作。
$str = 'Hello World';
echo '$str'; //会输出字符串$str,单引号不进行解析操作
echo "$str"; //会输出Hello World,双引号进行解析操作
$str = <<<Ex
This is a "test". //Heredoc
Ex;
$str = <<<"Ex"
This is a test. //Heredoc
Ex;
$str = <<<'Ex'
This is a test. //Nowdoc
Ex;
- 双引号和Heredoc会进行解析操作,变量的解析分为简单规则和复杂规则。
1、简单规则:当PHP解析器遇到$符时,去组合尽量多的标识以形成一个合法的变量名。可以用花括号来明确变量名的界线。
2、复杂规则:是指可以使用复杂的表达式。用花括号 { 和 } 把它括起来即可 - 存取和修改字符串中的字符:字符串中的字符可以通过以0开始的下标,来访问及存取。用超出字符串长度的下标写入将会拉长该字符串并以空格填充。非整数类型下标会被转换成整数。用负数下标读取字符串时返回空字符串。
- 转换成字符串:一个值前面加上(string) 或用 strval() 函数来转变成字符串。布尔的true会转换为字符串的’1’,false会被转换为空字符串。整型和浮点型会转换为数字的字面样式的字符串。数组会转为字符串’Array’。对象会转为字符串’Object’。资源会被转为字符串"Resource id #1"。NULL会被转为空字符串。
$str = 'hello world';
echo $str; //输出hello world
echo $str[1]; //输出e
echo $str{1}; //输出e
echo $str[20]; //用超出字符串长度的下标写入将会拉长该字符串并以空格填充。输出空格。
echo $str['1']; //输出e,非整数类型下标会被转换成整数。
二、Boolean(布尔)
- 布尔类型是PHP简单(标准)数据类型之一。
- 布尔表达了真值。可以为true或者false(不区分大小写)。
- 转换为布尔值。用(bool)或者(boolean)来强制转换。当转换为boolean时,以下值被认为是false:布尔值false本身 、整型值0、浮点型0.0、空字符串,及字符串"0"、不包括任何元素的数组、null
三、Integer(整型)
- 整型是PHP简单(标准)数据类型之一。整数必须有至少一个数字(0-9)。不能包含小数点、逗号、空格等。
- 十进制,十六进制(数字前必须加上0x),八进制(数字前必须加上0)或二进制(数字前必须加上0b)表示。
- PHP7.4.0之后整型数值可以包含下划线,如$int = 1_2_3_4;
- 整型数的字长跟平台有关,最大值可用常量PHP_INT_MAX获取,最小值可用常量PHP_INT_MIN获取。字长可用常量PHP_INT_SIZE获取。
- 溢出。如果给定的数超过integer的范围,会被解释为浮点型。
- 转换为整型。用 (int) 或 (integer) 强制转换。不过大多数情况下都不需要强制转换,因为当运算符,函数或流程控制需要一个 integer 参数时,值会自动转换。还可以通过函数 intval() 来将一个值转换成整型
四、Float(浮点型)
- 浮点型是PHP简单(标准)数据类型之一。有小数点或指数形式的数字。
- 浮点型也叫浮点数,双精度型。
- 字长和平台有关,精度有限。要测试浮点数是否相等,要使用一个仅比该数值大一丁点的最小误差值。该值也被称为机器极小值(epsilon)或最小单元取整数,是计算中所能接受的最小的差别值。
五、Array(数组)
- 数组是PHP复合数据类型中的一种。实际上是一个有序映射。简单来说,就是将值关联到键的映射。
- 定义数组,可以用array()来定义,也可以用[]代替array()。key可以是string或者intger,value可以是任意类型。如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。如果指定的键名已经有了值,则该值会被覆盖。
- 如果数组定义中多个单元都使用了同一个键名,则只使用最后一个,之前的被覆盖。
$arr1 = array('key1'=>'value1','key2'=>'value2');
$arr2 = array('key1'=>'value1','key2'=>'value2',); //最后一个数组单元之后的逗号可以省略
$arr3 = ['key1'=>'value1','key2'=>'value2'];
$arr4 = ['value1','value2','key1'=>'value3','value4']; //关联数组、索引数组组合
六、Objetc(对象)
- 对象是PHP复合数据类型中的一种。
- 在 PHP 中,对象必须声明。
首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。
然后我们在类中定义数据类型,然后在实例化的类中使用数据类型。
class Name{
function getName(){
echo "my name is PHP.";
}
}
$name = new Name(); //new一个对象
$name->getName(); //执行对象里的方法getName()
七、Null(Null)
- NULL是PHP特殊数据类型中的一种。表示一个变量没有值,或者值为NULL(不区分大小写)。
- 1、变量被赋值为NULL。2、变量还未被赋值。3、被unset()后的变量。以上三种情况变量都被认定为NULL。
八、Resource(资源)
- Resource是PHP特殊数据类型中的一种。资源类型的变量是一种保存到了外部资源的一种引用。通过专门的函数来建立和使用的。
九、Callback(回调)
- 一些函数如 call_user_func() 或 usort() 可以接受用户自定义的回调函数作为参数。回调函数不止可以是简单函数,还可以是对象的方法,包括静态类方法。
总结
以上就是今天要讲的内容,本文主要介绍了PHP9种数据类型。
标准类型——字符串:一个字符等于一个字节,最大2GB,按脚本文件相同的编码方式来编码。"."(点)运算符进行连接。单引号、双引号(进行解析)、Heredoc(进行解析,相当于双引号,结束符要顶格,后面加分号;)、Nowdoc(结构同Heredoc,但是用单引号,不解析)。解析规则(简单规则和复杂规则)。转换为字符串(一个值前面加上(string) 或用 strval() 函数)。
标准类型——布尔:表达了真值。true或者false(不区分大小写)。
转换为布尔值(用(bool)或者(boolean))。
标准类型——整型:必须有至少一个数字(0-9)。十进制,十六进制(0x),八进制(0)或二进制(0b)。字长跟平台有关。字长PHP_INT_SIZE。最大值PHP_INT_MAX。最小值PHP_INT_MIN。溢出会转为浮点型。转换((int) 或 (integer)或intval())。
标准类型——浮点型:有小数点或指数形式的数字。字长和平台有关,精度有限。要测试浮点数是否相等,要使用机器极小值。
复合类型——数组:键值对。array()或者[]。索引数组、关联数组。
复合类型——对象:对象使用必须申明。new一个。
特殊类型——Null:未被赋值,或者赋值为null,或被unset,不区分大小写。
特殊类型——资源:是一种保存到了外部资源的一种引用。
特殊类型——回调