PHP 数据类型
PHP 数据类型
变量可以存储不同类型的数据,而不同类型的数据可以做不同的事情。
PHP 支持以下数据类型:
- 字符串(String)
- 整数(Integer)
- 浮点数(Float,也称为双精度数)
- 布尔值(Boolean)
- 数组(Array)
- 对象(Object)
- NULL
- 资源(Resource)
获取数据类型
您可以使用 var_dump()
函数来获取任何对象的数据类型。
实例
var_dump()
函数返回数据类型和值:
$x = 5; var_dump($x);
PHP 字符串
字符串是由字符组成的序列,例如 "Hello world!"。
字符串可以是引号内的任何文本。您可以使用单引号或双引号:
实例
$x = "Hello world!"; $y = 'Hello world!'; var_dump($x); echo "<br>"; var_dump($y);
PHP 整数
整数数据类型是非小数的数,范围在 -2,147,483,648 到 2,147,483,647 之间。
整数的规则:
- 整数必须至少有一位数字
- 整数不能有小数点
- 整数可以是正数或负数
- 整数可以用十进制(基数 10)、十六进制(基数 16)、八进制(基数 8)或二进制(基数 2)表示
在以下示例中,$x
是一个整数。PHP var_dump()
函数返回数据类型和值:
实例
$x = 5985; var_dump($x);
PHP 浮点数
浮点数(floating point number)是带有小数点的数字或以指数形式表示的数字。
在下例中,$x
是一个浮点数。PHP var_dump()
函数返回数据类型和值:
实例
$x = 10.365; var_dump($x);
PHP 布尔值
布尔值表示两种可能的状态:TRUE 或 FALSE。
实例
$x = true; var_dump($x);
布尔值通常用于条件测试。
另请参阅:PHP If...Else。
PHP 数组
数组在单个变量中存储多个值。
在下例中,$cars
是一个数组。PHP var_dump()
函数返回数据类型和值:
实例
$cars = array("Volvo","BMW","Audi"); var_dump($cars);
另请参阅:PHP 数组。
PHP 对象
类和对象是面向对象编程的两个主要方面。
类是对象的模板,而对象是类的实例。
当创建各个对象时,它们从类中继承所有的属性和行为,但每个对象将为属性设置不同的值。
假设我们有一个名为 Car
的类,该类可拥有模型、颜色等属性。我们可以定义变量,如 $model
、$color
等,以保存这些属性的值。
当创建各个对象(Volvo、BMW、Audi 等)时,它们从类中继承所有的属性和行为,但每个对象将为属性设置不同的值。
如果您创建一个 __construct()
函数,当您从类创建对象时,PHP 将自动调用此函数。
实例
class Car { public $color; public $model; public function __construct($color, $model) { $this->color = $color; $this->model = $model; } public function message() { return "My car is a " . $this->color . " " . $this->model . "!"; } } $myCar = new Car("red", "Volvo"); var_dump($myCar);
请参阅:PHP 类/对象。
PHP NULL 值
Null 是一种特殊的数据类型,它只有一个值:NULL。
数据类型为 NULL 的变量是没有为其分配值的变量。
提示:如果变量已创建但未赋值,它将自动被赋值为 NULL。
也可以通过将值设置为 NULL 来清空变量:
实例
$x = "Hello world!"; $x = null; var_dump($x);
更改数据类型
如果您将整数值分配给变量,则类型将自动成为整数。
如果您将字符串分配给同一变量,则类型将更改为字符串:
实例
$x = 5; var_dump($x); $x = "Hello"; var_dump($x);
如果您想更改现有变量的数据类型,但不是通过更改值来实现,则可以使用类型转换。
类型转换允许您更改变量的数据类型:
实例
$x = 5; $x = (string) $x; var_dump($x);
另请参阅:PHP 类型转换。
PHP 资源
这种特殊的资源类型不是实际的数据类型。它是存储对 PHP 外部的函数和资源的引用的地方。
使用资源类型的一个常见示例是数据库调用。
由于这属于高级主题,因此我们在这里暂不讨论资源类型。