1.PHP 的主要数据类型:包括字符串、整型、浮点型、布尔型、数组、对象、资源和空值。

1
2
3
4
5
6
7
8
9
10
11
12
13
.字符串(String):字符串是一种表示文本数据的类型,可以使用单引号或双引号来定义。在 PHP 中,字符串可以进行连接、截取、查找和替换等操作。
.整型(Integer):整型是一种表示整数的类型,可以使用十进制、八进制或十六进制表示。在 PHP 中,整型可以进行加减乘除、取模、位运算等操作。
.浮点型(Float):浮点型是一种表示带小数的数字的类型,可以使用小数点或指数表示。在 PHP 中,浮点型可以进行加减乘除、取模、舍入等操作,但由于浮点数的精度问题,需要注意运算时可能出现的误差。
.布尔型(Boolean):布尔型是一种表示真或假的类型,只有两个值:true 和 false。在 PHP 中,布尔型通常用于条件判断和逻辑运算。
.数组(Array):数组是一种表示一组有序的数据的类型,可以包含不同类型的数据。在 PHP 中,数组可以使用索引或关联键来访问元素,可以进行增删改查等操作。
.对象(Object):对象是一种表示一个实例的类型,包含属性和方法。在 PHP 中,对象通常用于面向对象编程。
.资源(Resource):资源是一种表示外部资源的类型,例如打开的文件或数据库连接。在 PHP 中,资源通常由扩展库提供,可以使用特定的函数进行操作。
.空值(Null):空值是一种表示没有值的类型,一个变量如果没有被赋值,就是空值。在 PHP 中,可以使用 null 关键字来表示空值。
.回调/闭包(Callback/Closure):回调或闭包是一种表示可以被调用的函数或方法的类型,常用于事件处理、回调函数等。
.可空类型(Nullable Type):可空类型是 PHP 7 中引入的新特性,允许变量的值可以是特定类型或 null。
.标量类型声明(Scalar Type Declarations):标量类型声明是 PHP 7 中引入的新特性,要求函数或方法的参数或返回值必须是特定类型的标量值,可以使用 int、float、bool、string 等关键字来声明。

在 PHP 7 中,还引入了新的数据类型:可空类型(Nullable Type)和标量类型声明(Scalar Type Declarations)。可空类型允许变量的值可以是特定类型或 null,而标量类型声明则要求函数或方法的参数或返回值必须是特定类型的标量值(例如整数、浮点数、布尔值或字符串),可以使用 int、float、bool、string 等关键字来声明。

2.变量的数据类型:PHP 是一种动态类型语言,变量的数据类型在运行时可以根据变量的值自动推断。
3.类型转换:PHP 支持在不同数据类型之间进行转换,例如将整型转换为字符串,或者将字符串转换为布尔型。
4.变量的生命周期:PHP 变量的生命周期由其作用域和持久性属性决定,例如局部变量的生命周期在函数执行完毕后结束,而全局变量则可以在程序的任何地方访问。
5.特殊数据类型:PHP 还支持一些特殊的数据类型,如资源类型用于表示外部资源,如文件句柄,以及 NULL 类型用于表示空值。
6.PHP 数据类型的性能:不同的数据类型在内存占用和性能方面具有不同的特点,例如字符串操作可能比整型操作更耗费资源。
7.使用适当的数据类型:根据程序的需求和实际情况,选择适当的数据类型可以提高程序的效率和可读性。
8.PHP 数据类型的扩展和自定义:PHP 支持通过扩展和自定义来增强或创建新的数据类型,例如使用扩展来操作数据库或处理 XML 数据。

eg:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
// 字符串
$str1 = "Hello, World!";
$str2 = 'Hello, PHP!';

echo $str1 . "\n"; // 输出 Hello, World!
echo $str2 . "\n"; // 输出 Hello, PHP!

// 整型
$num1 = 123;
$num2 = 0123;
$num3 = 0x1A;

echo $num1 . "\n"; // 输出 123
echo $num2 . "\n"; // 输出 83(0123 转换为十进制为 83)
echo $num3 . "\n"; // 输出 26(0x1A 转换为十进制为 26)

// 浮点型
$f1 = 3.14;
$f2 = 6.02e23;

echo $f1 . "\n"; // 输出 3.14
echo $f2 . "\n"; // 输出 6.02E+23

// 布尔型
$bool1 = true;
$bool2 = false;

echo $bool1 . "\n"; // 输出 1
echo $bool2 . "\n"; // 输出空字符串

// 数组
$arr1 = array(1, 2, 3);
$arr2 = array('name' => 'John', 'age' => 30);

echo $arr1[0] . "\n"; // 输出 1
echo $arr2['name'] . "\n"; // 输出 John

// 对象
class Person {
public $name;
public $age;

function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}

function sayHello() {
echo "Hello, my name is " . $this->name . "\n";
}
}

$person = new Person('John', 30);
$person->sayHello(); // 输出 Hello, my name is John

// 资源
$fp = fopen('example.txt', 'r');
echo get_resource_type($fp) . "\n"; // 输出 stream

// 空值
$null = null;
echo $null . "\n"; // 输出空字符串
?>