PHP 数据类型
PHP 数据类型
Section titled “PHP 数据类型”PHP 数据类型概述
Section titled “PHP 数据类型概述”PHP 中的变量可以存放不同类型的数据。PHP 是一种动态类型语言(dynamically typed language),这意味着你通常不需要提前声明变量的类型;PHP 会根据赋给变量的值来确定其类型。
PHP 支持以下标量(scalar)类型:
bool: 表示布尔值(true或false)。int: 表示整型(整数)。float: 表示浮点数(也称为double或实数)。string: 表示字符串(字符序列)。
PHP 支持以下复合(compound)类型:
array: 表示有序映射(ordered map),可以存放多种类型的值。object: 表示用户定义类的一个实例(instance)。callable: 表示对函数或方法的引用。iterable: 表示任何可以用foreach循环遍历的类型(数组或实现了Traversable接口的对象)。
以及两种特殊(special)类型:
resource: 一种特殊变量,持有对外部资源(如文件句柄或数据库连接)的引用。null: 表示一个变量没有值。
PHP 字符串 (string)
Section titled “PHP 字符串 (string)”字符串是字符序列。字符串可以使用单引号 ('...')、双引号 ("...") 或 Heredoc/Nowdoc 语法定义。
- 单引号 (
'...'): 按字面意思处理内容,但\'(字面单引号)和\\(字面反斜杠)除外。变量和转义序列不会被解释。 - 双引号 (
"..."): 会解析变量(例如,"Hello $name")并解释转义序列(例如,"\n"表示换行,"\t"表示制表符)。
<?php$name = "World";$x = "Hello $name!\n"; // Variable interpolated, newline interpreted$y = 'Hello $name!\n'; // Literal string: Hello $name!\n
echo $x;echo $y;?>PHP 整型 (int)
Section titled “PHP 整型 (int)”整型是非小数数字。整型的大小取决于平台(32 位或 64 位),不过在大多数现代系统上,64 位是标准的。
你可以使用常量 PHP_INT_MAX 和 PHP_INT_MIN 找到系统上的最大和最小整型值。
整型的规则:
- 必须包含至少一个数字。
- 不能包含小数点。
- 可以是正数或负数。
- 可以用十进制(基数 10)、十六进制(基数 16,前缀为
0x)、八进制(基数 8,前缀为0)或二进制(基数 2,前缀为0b)表示。
var_dump() 函数对于检查变量的类型和值非常有用:
<?php$decimal_int = 1234;$negative_int = -567;$hex_int = 0xFF; // 255 in decimal$octal_int = 0755; // 493 in decimal$binary_int = 0b1010; // 10 in decimal
var_dump($decimal_int);var_dump($hex_int);echo "Max Integer: " . PHP_INT_MAX . "\n";?>输出(示例):
int(1234)int(255)Max Integer: 9223372036854775807PHP 浮点型 (float)
Section titled “PHP 浮点型 (float)”浮点数(也称为 double)是带小数点的数字或指数(科学记数)表示的数字。
警告:由于二进制浮点表示的特性,像 0.1 或 0.7 这样简单的十进制分数无法精确表示。比较浮点数是否相等时要小心;应使用一个小的容差值(epsilon)代替。
<?php$a = 10.365;$b = 2.5e3; // 2.5 * 10^3 = 2500$c = 7E-10; // 7 * 10^-10
var_dump($a);var_dump($b);
// Float comparison issue example$float_sum = 0.1 + 0.7;var_dump($float_sum); // Might output float(0.7999999999999999)var_dump($float_sum == 0.8); // Might output bool(false)!?>PHP 布尔型 (bool)
Section titled “PHP 布尔型 (bool)”布尔型表示两种可能的状态:true 或 false(不区分大小写)。
布尔型主要用于条件逻辑(if、else、循环)。许多值可以自动转换为布尔型 false:整数 0、浮点数 0.0、空字符串 "" 或 '0'、空数组 [] 以及特殊值 null。
<?php$is_active = true;$has_permission = false;
var_dump($is_active);var_dump((bool) 0); // bool(false)var_dump((bool) "Hello"); // bool(true)?>PHP 数组 (array)
Section titled “PHP 数组 (array)”数组是有序映射(ordered map),可以在单个变量名下存储多个值。数组可以包含不同类型的值,并且可以使用数字索引或关联索引(使用字符串作为键)。
现代 PHP 使用短数组语法 [] 代替旧的 array() 结构。
<?php// Numerically indexed array (indices start at 0)$colors = ["Red", "Green", "Blue"];var_dump($colors);echo $colors[1]; // Outputs: Green
// Associative array (key-value pairs)$user = [ 'name' => 'John Doe', 'age' => 30, 'city' => 'New York'];var_dump($user);echo $user['age']; // Outputs: 30
// Mixed array$mixed = [10, 'Hello', true, 'city' => 'London'];var_dump($mixed);?>数组在 PHP 中是基础概念,将在后续章节中更详细地介绍。
PHP 对象 (object)
Section titled “PHP 对象 (object)”对象是类的一个实例(instance)。类是蓝图,定义了操作数据的属性(properties)和方法(methods,即函数)。
面向对象编程(Object-Oriented Programming,简称 OOP)是现代 PHP 中的一种主要编程范式。
<?php// Define a simple classclass Car { // Property declaration (with type hint PHP 7.4+) public string $make; public string $model;
// Constructor method (called when creating an object) public function __construct(string $make, string $model) { $this->make = $make; $this->model = $model; }
// Method public function getDescription(): string { return "This car is a " . $this->make . " " . $this->model; }}
// Create an object (instance) of the Car class$myCar = new Car("Toyota", "Camry");
// Access properties and call methods using ->var_dump($myCar);echo $myCar->model . "\n"; // Outputs: Camryecho $myCar->getDescription() . "\n"; // Outputs: This car is a Toyota Camry?>面向对象编程概念,如类、对象、继承和接口,将在专门的 OOP 章节中深入介绍。
PHP NULL 值 (null)
Section titled “PHP NULL 值 (null)”null 是一种特殊数据类型,表示有意地缺少值。一个变量被认为是 null,如果:
- 它被显式地赋了常量
null(不区分大小写)。 - 它还没有被赋过值。
- 它被
unset()函数销毁。
<?php$noValue = null;var_dump($noValue); // Outputs: NULL
$x = "Hello world!";var_dump($x);
// Unset the variableunset($x);var_dump($x); // Warning: Undefined variable $x; var_dump will output NULL
var_dump($undefinedVariable); // Warning: Undefined variable; var_dump will output NULL?>PHP 资源 (resource)
Section titled “PHP 资源 (resource)”resource 是一种特殊变量类型,持有对外部资源的引用,例如打开的文件句柄、数据库连接或图像画布。
资源通常由特定的 PHP 函数创建和管理(例如 fopen()、mysqli_connect()、imagecreatefromjpeg())。它们通常需要使用 fclose()、mysqli_close()、imagedestroy() 等函数显式关闭或释放,以释放系统资源。
通常,除了将资源传递给相关的函数之外,你不会直接与它们交互。var_dump() 将显示类型为 ‘resource’ 及其内部 ID。
<?php$filename = 'example.txt';file_put_contents($filename, 'Some data');
// fopen returns a resource on success$fileHandle = fopen($filename, 'r');
if ($fileHandle) { var_dump($fileHandle); // Outputs something like: resource(5) of type (stream) fclose($fileHandle); // Important to close the resource} else { echo "Failed to open file.";}?>