专栏首页程序员小助手「基础编程学习」 「PHP7数组详解」:第1章 (8)数组和对象

「基础编程学习」 「PHP7数组详解」:第1章 (8)数组和对象

# 1.14 数组

讲了7节了,终于说到重头戏了。

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

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

$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

上面这个数组,是随用随建的。用的时候赋值,一般呢,我们明确知道的,用下面的方式书写:

$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');

大家可以看到,遵循规则定义,使用类和对象,程序封装的更为简洁了。

本文分享自微信公众号 - 程序员小助手(mql45ea),作者:walles

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 3分钟短文 | PHP 数组任意位置插入新元素,你是怎么处理的?

    接着我们这个系列的文章说。本文我们聊一聊 PHP 数组,如何在任意位置插入新元素。因为内置函数并没有提供类似 array_insert(&

    程序员小助手
  • Laravel5 自定义路由中间件的使用步骤,太好用,珍藏了!

    Laravel5中我们处理request请求,中间会有很多环节。本文所说的中间件,位于路由和控制器之间,起到过滤和筛选请求的作用。

    程序员小助手
  • 3分钟短文 | PHP 根据值移除数组元素,哪个方法最简单?

    PHP 数组操作,之前我们讲了如何根据值,进行多维数组的排序。今天说一说,如何根据值,进行数组元素的删除。

    程序员小助手
  • Python MRO

    对于Python中的多继承情况,运行时在搜索对象的属性或方法时,需要遵循一定的顺序规则,这个规则称为:Method Resolution Order (MRO)...

    雪飞鸿
  • 原生:点击加入购物车的动画

    yuezhongbao
  • CRM客户关系管理系统(七) 第七章、动态modelform功能实现

    zhang_derek
  • 搭建模型第一步:你需要预习的NumPy基础都在这了

    NumPy 主要的运算对象为同质的多维数组,即由同一类型元素(一般是数字)组成的表格,且所有元素通过正整数元组进行索引。在 NumPy 中,维度 (dimens...

    机器之心
  • 【机器学习】 搭建模型第一步:你需要预习的NumPy基础都在这了

    NumPy 主要的运算对象为同质的多维数组,即由同一类型元素(一般是数字)组成的表格,且所有元素通过正整数元组进行索引。在 NumPy 中,维度 (dimens...

    貟王軍
  • NumPy Essentials 带注释源码 三、NumPy 数组使用

    ApacheCN_飞龙
  • [机器学习实战札记] NumPy基础

    <<机器学习实战>>一书非常注重实践,对每个算法的实现和使用示例都提供了python实现。在阅读代码的过程中,发现对NumPy有一定的了解有助于理解代码。特别是...

    云水木石

扫码关注云+社区

领取腾讯云代金券