如何详细讲解在PHP中遍历对象的技巧?
- 内容介绍
- 文章标签
- 相关推荐
本文共计468个文字,预计阅读时间需要2分钟。
PHP如何遍历对象?对于PHP来说,foreach是一个非常方便好用的语法,几乎每个PHPer都会在日常接触最多的请求之一。那么对象能否通过foreach来遍历呢?答案是肯定的,但有一个但书。
对于对象来说,如果它实现了`__iterator`魔术方法,那么可以通过foreach来遍历。这个方法应该返回一个实现了`Iterator`接口的对象。如果对象没有实现这个方法,那么就不能直接通过foreach来遍历。
简单来说,对象要能通过foreach遍历,需要满足以下条件:
1.实现了`__iterator`魔术方法。
2.`__iterator`方法返回的对象实现了`Iterator`接口。
这样,你就可以使用foreach来遍历对象了。
对于php来说,foreach是非常方便好用的一个语法,几乎对于每一个PHPer它都是日常接触最多的请求之一。那么对象是否能通过foreach来遍历呢?
答案是肯定的,但是有个条件,那就是对象的遍历只能获得它的公共属性。
// 普通遍历 class A { public $a1 = '1'; public $a2 = '2'; public $a3 = '3'; private $a4 = '4'; protected $a5 = '5'; public $a6 = '6'; public function test() { echo 'test'; } } $a = new A(); foreach ($a as $k => $v) { echo $k, '===', $v, PHP_EOL; } // a1===1 // a2===2 // a3===3 // a6===6
不管是方法还是受保护或者私有的变量,都无法遍历出来。只有公共的属性才能被遍历出来。其实,我们之前在讲设计模式时讲过的迭代器模式就是专门用来进行对象遍历的,而且PHP已经为我们准备好了相关的接口,我们只需要去实现这个接口就可以完成迭代器模式的创建了。具体的内容可以参考之前的设计模式系列文章:PHP设计模式之迭代器模式(
本文共计468个文字,预计阅读时间需要2分钟。
PHP如何遍历对象?对于PHP来说,foreach是一个非常方便好用的语法,几乎每个PHPer都会在日常接触最多的请求之一。那么对象能否通过foreach来遍历呢?答案是肯定的,但有一个但书。
对于对象来说,如果它实现了`__iterator`魔术方法,那么可以通过foreach来遍历。这个方法应该返回一个实现了`Iterator`接口的对象。如果对象没有实现这个方法,那么就不能直接通过foreach来遍历。
简单来说,对象要能通过foreach遍历,需要满足以下条件:
1.实现了`__iterator`魔术方法。
2.`__iterator`方法返回的对象实现了`Iterator`接口。
这样,你就可以使用foreach来遍历对象了。
对于php来说,foreach是非常方便好用的一个语法,几乎对于每一个PHPer它都是日常接触最多的请求之一。那么对象是否能通过foreach来遍历呢?
答案是肯定的,但是有个条件,那就是对象的遍历只能获得它的公共属性。
// 普通遍历 class A { public $a1 = '1'; public $a2 = '2'; public $a3 = '3'; private $a4 = '4'; protected $a5 = '5'; public $a6 = '6'; public function test() { echo 'test'; } } $a = new A(); foreach ($a as $k => $v) { echo $k, '===', $v, PHP_EOL; } // a1===1 // a2===2 // a3===3 // a6===6
不管是方法还是受保护或者私有的变量,都无法遍历出来。只有公共的属性才能被遍历出来。其实,我们之前在讲设计模式时讲过的迭代器模式就是专门用来进行对象遍历的,而且PHP已经为我们准备好了相关的接口,我们只需要去实现这个接口就可以完成迭代器模式的创建了。具体的内容可以参考之前的设计模式系列文章:PHP设计模式之迭代器模式(

