PHP中遍历$this的隐式循环语法官方称谓是什么?
关于PHP中遍历$this的隐式循环语法的官方名称
嘿,我来给你把这个点讲明白!你代码里用foreach ($this as $n => &$v)遍历当前对象的语法,官方名称叫做对象遍历(Object Iteration),是PHP内置的对象属性遍历特性。
咱们拆解下这个逻辑:
当你直接用foreach遍历一个对象(这里的$this就是当前类的实例对象)时,如果你的类没有实现Iterator或IteratorAggregate这类自定义迭代接口,PHP会触发默认的遍历行为——自动枚举对象中所有可访问的非静态属性。这里的“可访问”是指属性的访问控制(public/protected/private)符合当前代码上下文的权限规则。
举个直观的小例子帮你理解:
class Demo { public $publicProp = "公开属性"; protected $protectedProp = "受保护属性"; private $privateProp = "私有属性"; public static $staticProp = "静态属性"; public function iterateSelf() { foreach ($this as $key => $value) { echo "{$key}: {$value}\n"; } } } $demo = new Demo(); $demo->iterateSelf();
运行这段代码后,会输出:
publicProp: 公开属性 protectedProp: 受保护属性 privateProp: 私有属性
而静态属性$staticProp不会被遍历到,因为foreach的默认对象遍历只会处理实例属性,不会涉及静态成员。
你代码里的&$v是引用遍历,能直接修改对象对应属性的值,这个你已经清楚,就不再赘述啦。
内容的提问来源于stack exchange,提问作者Daniel Thompson
相关产品推荐
相关产品推荐

