对象遍历|学习笔记

简介: 快速学习对象遍历

开发者学堂课程【PHP 进阶教程-由浅入深掌握面向对象开发-第二阶段:对象遍历】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/712/detail/12715


对象遍历


内容介

一、目标

二、概念

三、示例

四、小结


一、目标

理解对象遍历的概念和内容


二、概念

对象遍历:将对象中的所有属性以键值对的形式取出并进行访问,键值对有名字和值

1.对象是一种复合数据类型,对象中真正保存的内容是属性,所以遍历是遍历对象的属性

2.对象的属性本质也是一种键值对关系:名字=值

3.对象遍历就是利用 foreach 对对象中的属性进行取出解析

对象遍历遵循访问修饰限定符的限定:即类外只能遍历所有公有属性

foreach (对象变量 as [属性名变量=>]属性值变量){

#属性名变量代表取出的每个属性的名字

#属性值变量代表取出的每个属性的值

}


三、示例

1.使用 foreach 对对象进行遍历

类里有很多个属性,其中三个公有,一个受保护,一个私有。

#定义类

class Man{

public $name = 'LiLei' ;

public $height = 178;

public $weight = 140;

protected $age = 30;

private $money = 1000;

}

#实例化

$m = new Man();

#遍历

foreach($m as $k => $v){

echo sk . ' : ' . sv . '
';   # $k 为属性名,$v 为属性值

}

实例化之后为了不用再初始化,直接在类里对属性进行初始化。初始化之后就进行遍历输出对象

图片1.png

输出结果里有 name、height 和 weight,而 age 和 money 没有被输出,原因是当前操作虽然叫遍历但是本质是在对象掌握每一个数据取出来,而当前对象的操作是在外部,所以受保护和私有的是不允许在外部访问的。这就是对象的简单遍历。


四、小结

1、foreach 可以对对象像数组一样遍历,因为对象本身属性都是键值对

2、foreach 遍历对象遍历的是对象内部的所有公有属性(在类外:受访问修饰限定符的限制,如果在类的内部方法里访问,可以遍历出所有的属性)

图片2.png

在类内部可以遍历出所有的属性,因为在里面不受限制,在外部限制的原因是需要逐个去取,public 才能取,protected private 取不到,这是 foreach 的特性。

相关文章
【Multisim14.0】彻底卸载删除
【Multisim14.0】彻底卸载删除
2382 0
|
监控 安全 网络安全
SOC:简介、功能及其优点
【8月更文挑战第19天】
1517 0
|
JSON 前端开发 Java
spring-framework最新源码调试
最近打算阅读spring-framework的源码,按照GitHub中在spring-framework项目中给出的编译和导入IntelliJ IDEA的方式进行操作,其中还是遇到了各种各样的问题。主要是环境,最好都用新的,JDK17、Idea 2021、Gradle7.2、Tomcat10等,然后就是多次重试。最终还是成功了,文章末尾也列了几个遇到的问题及最终存在我的GitHub中的地址。
513 0
spring-framework最新源码调试
|
传感器 物联网 智能硬件
IoT设备与手机App之间实时消息通信解决方案
PLC 工控机和管理人员 App 的联动
1953 15
IoT设备与手机App之间实时消息通信解决方案
|
SQL 机器学习/深度学习 JSON
钉钉/企业微信机器人:“Github触发器”与“Issue机器人”
众所周知,在Serverless领域中,触发器是FaaS必不可少的一部分;一个FaaS平台,他的触发器数量、质量以及类型,很可能会决定这个FaaS平台是否能成为“主流”平台;因为触发器不仅仅是一种功能的体现,更是解决普遍性业务诉求的一个重要途径;目前来看,各个云厂商所提供的触发器基本上都会包括API网关触发器、对象存储触发器、时间触发器等,当然也有厂商提供一定的消息触发器、日志触发器、甚至是一些SQL相关的触发器、CDN触发器等,那么在我们的实际生产生活中,这些表面上看起来“很基础”的触发器,是否可以升级成为一个有趣的“高级触发器”呢?
1074 0
|
机器学习/深度学习 XML TensorFlow
目标检测之——labelImg标注工具使用方法(一)
目标检测之——labelImg标注工具使用方法(一)
目标检测之——labelImg标注工具使用方法(一)
|
机器学习/深度学习 并行计算 PyTorch
使用anaconda配置gpu版本的torch==1.7.1(非30系列以上显卡也可用)
使用anaconda配置gpu版本的torch==1.7.1(非30系列以上显卡也可用)
使用anaconda配置gpu版本的torch==1.7.1(非30系列以上显卡也可用)
|
前端开发 JavaScript API
|
应用服务中间件 Linux 开发工具
centos8升级安装Nginx1.18
1、下载rpm包: wget http://nginx.org/packages/centos/8/x86_64/RPMS/nginx-1.18.0-1.el8.ngx.x86_64.rpm 2、执行升级命令: rpm -Uvh nginx-1.18.0-1.el8.ngx.x86_64.rpm
770 0
centos8升级安装Nginx1.18
|
安全 druid Apache
CVE-2021-36749——Apache Druid LoadData 任意文件读取漏洞
CVE-2021-36749——Apache Druid LoadData 任意文件读取漏洞
834 0
CVE-2021-36749——Apache Druid LoadData 任意文件读取漏洞