数组,将关联的数据,放在内存中。

举一个例子,比如说一个班级,有一个班级号,班级名,描述,房间号,教导员,班级人数。
可以存到一个数组内,这样写:

$class_array[0] = "CS122";// class number$class_array[1] ="Programming Concepts 1";// class name$class_array[2] ="Basic concepts of the PHP language.";// description$class_array[3] = "B123"; // room$class_array[4] = "Dr. Abraham Excell";// instructor$class_array[5] = 50;// number of students

上面这个数组,是随用随建的。
用的时候赋值,一样平常呢,我们明确知道的,用下面的办法书写:

php对象数组基本编程进修 PHP7数组详解第1章 8数组和对象 Webpack

$class_array = array( 'CS122', 'Programming Concepts 1', 'Basic concepts of the PHP language.', 'B123', 'Dr. Abraham Excell', 50);

一览无余。
大家看到,这个数组内存储的有整型,有字符串,类型不一样,都可以放在一起。
这与我们在强类型措辞内看到的,声明数组之前,必须指天命组的长度,数组元素的数据类型,不一样,不一样,不一样!

要不说PHP没有真正的数组呢。
PHP的数组,说白了,便是键值映射数据对。

把上面额数组,利用var_dump打印出来,看一下数组的构造。
我们创造,数组是默认从0开始,利用正整数作为键,存储数据的。

PHP的数组也的确是这样的机制,它还支持明确指天命组的键,也便是键值对存储。
看下面的额数据:

$class_array["class number"] = "CS122";$class_array["class name"] = "Programming Concepts 1";$class_array["description"] = "Basic concepts of the PHP language.";$class_array["room"] = "B123";$class_array["instructor"] = "Dr. Abraham Excell";$class_array["number of students"] = 50;

这次,我们利用的键是字符串型。

我们同样利用var_dump打印其内部构造。

键由字符串组成的。

上面的是一维数组,大略数组。
当然,数组也支持元素为数组,比如下边这样。

$class_array = array( array( 'CS122', 'Programming Concepts 1', 'Basic concepts of the PHP language.', 'B123', 'Dr. Abraham Excell', 50 ), array( 'CS123', 'Programming Concepts 2', 'Advanced concepts of the PHP language.', 'B124', 'Dr. Abraham Excell', 50 ));

这个是二维数组。
后面章节再详细说。

# 1.15 工具,属性,和方法

PHP是一门面向工具的措辞。
类由属性和方法组成。
工具是类的实例。

自 PHP 5 起完备重写了工具模型以得到更佳性能和更多特性。
这是自 PHP 4 以来的最大变革。
PHP 5 具有完全的工具模型。

类的访问掌握

对属性,或者方法的访问,通过再其前面添加关键字来实现。

一共有三种掌握级别,public,private,protected。

public定义共有类成员,可以在任何地方被访问;

private定义私有类成员,只能在定义的类内利用和访问,不能继续,不能外部访问。

protected定义受保护的类成员,可以被自身,子类,和父类访问。

默认,是公有,属性和方法。

说观点不直不雅观,来看例子。

先声明一个类,然后用new关键字实例化出来一个工具。
然后这个工具就继续了类的所有属性和方法。

由于有访问掌握,以是只有公有的方法和属性,才能访问。
private,protected的属性和方法,是没有权限访问到的。

上面是项目中的一个完全的类。
利用var声明的属性,默认是public公有属性。

特殊i地,__construct()方法,是在该类实例化的时候,会实行个中的代码
该方法吸收一个$path参数,在实例化的时候,会进行传入。

其他方法,由于没有特殊解释为public/private/protected,因此默认public。
可外部访问。

下面看一下业务逻辑中,有都是如何利用这个类的。

$smarty = new template(ROOT_PATH . 'upgrade/templates/');

直接用new关键字,实例化。
传入一个字符串参数,在实例化的时候,会实行__construct()方法。
接着$smarty就可以自由访问template类的所有公有属性和方法了。

$smarty->assign('page_title', $position['title']); // 页面标题$smarty->assign('ur_here', $position['ur_here']); // 当前位置$smarty->display('activity.dwt');

大家可以看到,遵照规则定义,利用类和工具,程序封装的更为简洁了。