- PHP 教程
- PHP - 首页
- PHP - 简介
- PHP - 安装
- PHP - 历史
- PHP - 特性
- PHP - 语法
- PHP - Hello World
- PHP - 注释
- PHP - 变量
- PHP - Echo/Print
- PHP - var_dump
- PHP - $ 和 $$ 变量
- PHP - 常量
- PHP - 魔术常量
- PHP - 数据类型
- PHP - 类型转换
- PHP - 类型混合
- PHP - 字符串
- PHP - 布尔值
- PHP - 整数
- PHP - 文件与 I/O
- PHP - 数学函数
- PHP - Heredoc 和 Nowdoc
- PHP - 复合类型
- PHP - 文件包含
- PHP - 日期和时间
- PHP - 标量类型声明
- PHP - 返回类型声明
- PHP 运算符
- PHP - 运算符
- PHP - 算术运算符
- PHP - 比较运算符
- PHP - 逻辑运算符
- PHP - 赋值运算符
- PHP - 字符串运算符
- PHP - 数组运算符
- PHP - 条件运算符
- PHP - 展开运算符
- PHP - 空值合并运算符
- PHP - 键值比较运算符
- PHP 控制语句
- PHP - 决策
- PHP - If…Else 语句
- PHP - Switch 语句
- PHP - 循环类型
- PHP - For 循环
- PHP - Foreach 循环
- PHP - While 循环
- PHP - Do…While 循环
- PHP - Break 语句
- PHP - Continue 语句
- PHP 函数
- PHP - 函数
- PHP - 函数参数
- PHP - 按值传递
- PHP - 按引用传递
- PHP - 默认参数
- PHP - 具名参数
- PHP - 可变参数
- PHP - 返回值
- PHP - 传递函数
- PHP - 递归函数
- PHP - 类型提示
- PHP - 变量作用域
- PHP - 严格类型
- PHP - 匿名函数
- PHP - 箭头函数
- PHP - 可变函数
- PHP - 局部变量
- PHP - 全局变量
- PHP 超全局变量
- PHP - 超全局变量
- PHP - $GLOBALS
- PHP - $_SERVER
- PHP - $_REQUEST
- PHP - $_POST
- PHP - $_GET
- PHP - $_FILES
- PHP - $_ENV
- PHP - $_COOKIE
- PHP - $_SESSION
- PHP 文件处理
- PHP - 文件处理
- PHP - 打开文件
- PHP - 读取文件
- PHP - 写入文件
- PHP - 文件是否存在
- PHP - 下载文件
- PHP - 复制文件
- PHP - 追加文件
- PHP - 删除文件
- PHP - 处理 CSV 文件
- PHP - 文件权限
- PHP - 创建目录
- PHP - 列出文件
- 面向对象 PHP
- PHP - 面向对象编程
- PHP - 类和对象
- PHP - 构造函数和析构函数
- PHP - 访问修饰符
- PHP - 继承
- PHP - 类常量
- PHP - 抽象类
- PHP - 接口
- PHP - 特性
- PHP - 静态方法
- PHP - 静态属性
- PHP - 命名空间
- PHP - 对象迭代
- PHP - 封装
- PHP - Final 关键字
- PHP - 重载
- PHP - 克隆对象
- PHP - 匿名类
- PHP Web 开发
- PHP - Web 概念
- PHP - 表单处理
- PHP - 表单验证
- PHP - 表单邮件/URL
- PHP - 完整表单
- PHP - 文件包含
- PHP - GET 和 POST
- PHP - 文件上传
- PHP - Cookie
- PHP - Session
- PHP - Session 选项
- PHP - 发送邮件
- PHP - 净化输入
- PHP - Post-Redirect-Get (PRG)
- PHP - 闪存消息
- PHP 高级
- PHP - MySQL
- PHP.INI 文件配置
- PHP - 数组解构
- PHP - 编码规范
- PHP - 正则表达式
- PHP - 错误处理
- PHP - Try…Catch
- PHP - Bug 调试
- PHP - 针对 C 开发人员
- PHP - 针对 PERL 开发人员
- PHP - 框架
- PHP - Core PHP 与框架
- PHP - 设计模式
- PHP - 过滤器
- PHP - JSON
- PHP - 异常
- PHP - 特殊类型
- PHP - 哈希
- PHP - 加密
- PHP - is_null() 函数
- PHP - 系统调用
- PHP - HTTP 认证
- PHP - 交换变量
- PHP - Closure::call()
- PHP - 过滤后的 unserialize()
- PHP - IntlChar
- PHP - CSPRNG
- PHP - 预期
- PHP - Use 语句
- PHP - 整数除法
- PHP - 已弃用的特性
- PHP - 已移除的扩展和 SAPI
- PHP - PEAR
- PHP - CSRF
- PHP - FastCGI 进程
- PHP - PDO 扩展
- PHP - 内置函数
- PHP 有用资源
- PHP - 速查表
- PHP - 问答
- PHP - 快速指南
- PHP - 在线编译器
- PHP - 有用资源
- PHP - 讨论
PHP – 数据类型
术语“数据类型”指的是将数据分类到不同的类别。PHP 总共有八种数据类型,我们用它们来构建变量:
整数 - 没有小数点的整数,例如 4195。
双精度浮点数 - 浮点数,例如 3.14159 或 49.1。
布尔值 - 只有两个可能的值,要么为真,要么为假。
NULL - 仅有一个值:NULL 的特殊类型。
字符串 - 字符序列,例如 'PHP 支持字符串操作。'
数组 - 其他值的命名和索引集合。
对象 - 程序员定义的类的实例,可以打包其他类型的值以及特定于类的函数。
资源 - 保留对 PHP 外部资源(如数据库连接)的引用的特殊变量。
前五个是简单类型,接下来的两个(数组和对象)是复合类型。复合类型可以打包任意类型的值,而简单类型则不能。
在本章中,让我们详细讨论这些 PHP 内置数据类型。
PHP 中的整数数据类型
没有小数点的整数(例如 4195)在 PHP 中属于 int 类型。整数数据类型是最简单的类型。它们对应于简单的整数,包括正数和负数。
int 是集合 Z = {..., -2, -1, 0, 1, 2, ...} 中的一个数字。
int 可以用十进制(基数 10)、十六进制(基数 16)、八进制(基数 8)或二进制(基数 2)表示法表示。
要使用八进制表示法,数字前要加上 "0o" 或 "0O"。要使用十六进制表示法,数字前要加上 "0x"。要使用二进制表示法,数字前要加上 "0b"。
以下是一些 示例:
十进制整数 - 201、4195、-15
八进制整数 - 0010、0O12、-0O21
十六进制整数 - 0x10、-0x100
二进制整数 - 0b10101、-0b100
整数可以分配给变量,也可以用于表达式,例如:
$int_var = 12345; $another_int = -12345 + 12345;
PHP 中的双精度浮点数数据类型
双精度浮点数变量表示浮点数(也称为“浮点数”、“双精度浮点数”或“实数”),它们是带有小数部分的数字。小数部分位于整数部分之后,由小数点符号 (.) 分隔。
注意 - 双精度浮点数变量可以是正数、负数或零。
$var1 = 1.55 $var2 =-123.0
科学浮点数表示法
PHP 还允许使用科学表示法来表示带有更多小数位数的浮点数。“E”或“e”符号用于分隔整数和小数部分。
− 1.2e3, 2.33e-4, 7E-10, 1.0E5
默认情况下,双精度浮点数以所需的最小小数位数打印。请查看以下 示例:
<?php $many = 2.2888800; $many_2 = 2.2111200; $few = $many + $many_2; print("$many + $many_2 = $few"); ?>
它产生以下 输出:
2.28888 + 2.21112 = 4.5
PHP 中的布尔值数据类型
bool 类型只有两个值;它可以是真或假。bool 类型用于表达真值。
$bool1 = true; $bool2 = false;
您还可以使用整数“1”和“0”来表示真和假布尔值:
$bool3 = 1; $bool4 = 0;
通常,返回 bool 值的运算符的结果将传递给控制结构,例如 if、while 或 do-while。例如,
if (TRUE) print("This will always print."); else print("This will never print.");
将其他数据类型解释为布尔值
以下是一组规则,您可以使用它们将其他数据类型解释为布尔值:
如果值是数字,则仅当该值等于零时才为假,否则该值为真。
如果值是字符串,则当字符串为空(字符数为零)或为字符串“0”时为假,否则为真。
NULL 类型的值为假。
如果值是数组,则当它不包含其他值时为假;否则为真。对于对象,包含值意味着具有已分配值的成员变量。
有效的资源为真(尽管某些在成功时返回资源的函数在不成功时将返回 FALSE)。
注意 - 不要使用双精度浮点数作为布尔值。
以下每个变量在用作布尔值上下文中时,其名称中都包含真值。
$true_num = 3 + 0.14159; $true_str = "Tried and true" $true_array[49] = "An array element"; $false_array = array(); $false_null = NULL; $false_num = 999 - 999; $false_str = "";
PHP 中的字符串数据类型
字符串是一系列字符,例如“PHP 支持字符串操作”。
在 PHP 中,字符与字节相同。这意味着 PHP 仅支持 256 个字符集,因此不提供本机 Unicode 支持。
PHP 支持单引号和双引号两种字符串格式。以下两种表示方式在 PHP 中都是有效的:
$string_1 = "This is a string in double quotes"; $string_2 = 'This is a somewhat longer, singly quoted string';
以下是一些关于字符串类型的更多示例:
$string_39 = "This string has thirty-nine characters"; $string_0 = ""; // a string with zero characters
单引号字符串几乎按字面原样处理,而双引号字符串会将变量替换为其值,并对某些字符序列进行特殊解释。
<?php $variable = "name"; $literally = 'My $variable will not print!'; print($literally); print "\n"; $literally = "My $variable will print!"; print($literally); ?>
运行此代码时,将产生以下输出:
My $variable will not print! My name will print
字符串长度没有人工限制。在可用内存范围内,您应该能够创建任意长度的字符串。
由双引号分隔的字符串(如 "this")会被 PHP 以以下两种方式预处理:
以反斜杠 (\) 开头的某些字符序列将替换为特殊字符。
变量名(以$开头)将替换为其值的字符串表示形式。
转义序列替换如下:
\n 将替换为换行符
\r 将替换为回车符
\t 将替换为制表符
\$ 将替换为美元符号本身 ($)
\" 将替换为单个双引号 (")
\\ 将替换为单个反斜杠 (\)
PHP 还具有Heredoc 和Nowdoc 字符串数据类型的表示形式。
字符串数据类型的 Heredoc 表示形式
您可以使用 heredoc 将多行赋值给单个字符串变量:
<?php $channel =<<<_XML_ <channel> <title>What's For Dinner</title> <link>http://menu.example.com/ </link> <description>Choose what to eat tonight.</description> </channel> _XML_; echo <<< END This uses the "here document" syntax to output multiple lines with variable interpolation. Note that the here document terminator must appear on a line with just a semicolon. no extra whitespace! END; print $channel; ?>
运行此代码时,将产生以下输出:
This uses the "here document" syntax to output multiple lines with variable interpolation. Note that the here document terminator must appear on a line with just a semicolon. no extra whitespace! <channel> <title>What's For Dinner</title> <link>http://menu.example.com/ </link> <description>Choose what to eat tonight.</description> </channel>
字符串数据类型的 Nowdoc 表示形式
heredoc 标识符的所有规则也适用于 nowdoc 标识符。nowdoc 的指定方式与heredoc相同,但在 nowdoc 内部没有解析。您可以使用 nowdoc 结构嵌入大块文本,而无需使用任何转义字符。
nowdoc 使用与 heredoc 相同的 <<< 序列进行标识,但标识符用单引号括起来,例如 <<<'EOT'。nowdoc 适用于单引号字符串,就像 heredoc 适用于双引号字符串一样。
请查看以下示例:
<?php echo <<<'IDENTIFIER' As the cat cleared its throat with a refined "Meow", the squirrel chirped excitedly about its latest discovery of a hidden stash of peanut treasure! IDENTIFIER; ?>
运行代码并检查其输出:
As the cat cleared its throat with a refined "Meow", the squirrel chirped excitedly about its latest discovery of a hidden stash of peanut treasure!
PHP 中的 Null 数据类型
在 PHP 中,null 表示一种特殊类型,它只有一个值:NULL。未定义和 unset() 变量将解析为值 "null"。
程序员通常在 PHP 中使用 Null 数据类型来初始化变量或指示值缺失。
要为变量赋予 NULL 值,只需像这样赋值:
$my_var = NULL;
特殊的常量 NULL 通常是大写的,但实际上它是不区分大小写的;您也可以键入:
$my_var = null;
已分配 NULL 值的变量具有以下属性:
在布尔上下文中,它评估为 FALSE。
当使用 IsSet() 函数测试时,它返回 FALSE。
注意:PHP 中变量的数据类型是在运行时根据分配给它们的值确定的。
PHP 中的数组数据类型
PHP 中的数组是有序映射,一个键与一个或多个值相关联。PHP 数组使用 array() 函数定义,或者使用简写形式,其中数据放在方括号中。
请查看以下关联数组示例:
使用 array() 函数
$arr = array( "foo" => "bar", "bar" => "foo", );
使用简写形式
$arr = [ "foo" => "bar", "bar" => "foo", ];
PHP 中的数组也可以使用“键值对”语法定义。这称为索引数组。
$arr = array("foo", "bar", "hello", "world");
在多维数组中,主数组中的每个元素也可以是数组。并且,子数组中的每个元素可以是数组,依此类推。多维数组中的值使用多个索引访问。
注意:在 PHP 中,复合数据类型用于存储数据集合,包括数组和对象。
PHP 中的对象数据类型
对象类型是程序员定义的类的实例,它可以打包其他类型的值以及特定于该类的函数。
要创建新对象,请使用new 语句实例化一个类:
class foo { function bar() { echo "Hello World."; } } $obj = new foo; $obj->bar();
PHP 中的资源数据类型
资源是特殊的变量,它们保存对 PHP 外部资源的引用(例如文件流或数据库连接)。
这是一个文件资源的示例:
$fp = fopen("foo.txt", "w");
属于上述任何类型的数据都存储在变量中。但是,由于 PHP 是一种动态类型语言,因此无需指定变量的类型,因为这将在运行时确定。
示例:gettype() 函数
gettype() 函数有助于找出存储在变量中的数据类型:
<?php $x = 10; echo gettype($x) . "\n"; $y = 10.55; echo gettype($y) . "\n"; $z = [1,2,3,4,5]; echo gettype($z); ?>
运行此代码时,将产生以下输出:
integer double array