PHP编程
完成条件
数据结构
变量变量
PHP 有一个遗留概念,叫做“变量变量”。这是一个较旧的、更有限的编程概念,早于复合数据结构的出现。由于 PHP 现在支持复合数据结构,变量变量的概念实际上已经过时。
PHP 手册中提到:
“有时能够使用可变的变量名是很方便的。也就是说,变量名可以动态地设置和使用。”
这种方法在不支持复合数据结构的编程语言中历史上曾被使用。在 PHP 中,没有一个程序功能或算法是通过变量变量获得的,而不能通过复合数据结构来获得。
此外,“变量变量”容易出错,并且需要更多的维护工作量。
基本概念
数据结构是使用常规 PHP 变量表示复合实体的一种方式。
熟悉数据库设计和数据库实现的人会知道数据库规范化的概念。
PHP 中的数据结构代表了类似的概念。每当处理复杂概念并在 PHP 中表示它们时,数据结构是一种规范化 PHP 变量的方式,以一致和统一地表示复杂概念。
PHP 原生数据结构
- 字符串 是表示单一值(标量)的结构。
- 数组 是表示值的列表(向量)的结构。
示例
字符串示例:
$person_name = 'Alice';
数组示例:
$person_names = Array( 0 => 'Alice', 1 => 'Bob', 2 => 'Charlie');
$alice_info = Array( 0 => 'Alice', 1 => 'Female', 2 => '26', 3 => 'alice@example.com');
PHP 复合数据结构
- SimpleDictionary 是表示无序名称-值对序列的结构。在 PHP 中,这是通过标准数组实现的,数组索引使用字符串。
- SimpleSequence 是表示有序值序列的结构。在 PHP 中,这是通过标准数组实现的,数组索引使用数字。
- SimpleTable (aod) 是一个有序序列,由一个或多个
SimpleDictionary
组成,每个SimpleDictionary
实例都有匹配的名称。 - SimpleTable (aoa) 是一个序列,由一个或多个
SimpleSequence
组成,每个SimpleSequence
实例都有相应的索引。
方括号方法允许通过直接设置值来设置。例如,要使 $foobar[1] = $foo
,只需要这样做:
示例
SimpleDictionary 示例:
$person_names = Array( 'person1' => 'Alice', 'person2' => 'Bob', 'person3' => 'Charlie' );
$alice_info = Array( 'first_name' => 'Alice', 'sex' => 'Female', 'age' => '26', 'email' => 'alice@example.com' );
更复杂的 SimpleDictionary 示例:
$user_profile = Array(
'main' => Array(
'first_name' => "Archibald",
'last_name' => "Shaw",
'sex' => "male",
'age' => "33",
),
'guardian' => Array(
'first_name' => "",
'last_name' => "",
),
'children' => Array(
0 => Array(
'first_name' => "Sally",
'last_name' => "Shaw",
),
1 => Array(
'first_name' => "Scott",
'last_name' => "Shaw",
),
),
);
备注和参考资料
最后修改: 2025年01月10日 星期五 00:54