PHP遍历对象的示例

  介绍

这篇文章给大家分享的是有关PHP遍历对象的示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

对于PHP来说,foreach是非常方便好用的一个语法,几乎对于每一个PHP它都是日常接触最多的请求之一。那么对象是否能通过foreach来遍历呢?

答案是肯定的,但是有个条件,那就是对象的遍历只能获得它的公共属性。

//,普通遍历   class    {   ,,,public  a1 美元;=,& # 39;1 & # 39;;   ,,,public  a2 美元;=,& # 39;2 & # 39;;   ,,,public  a3 美元;=,& # 39;3 & # 39;;      ,,,private  a4 美元;=,& # 39;4 & # 39;;   ,,,protected  a5 美元;=,& # 39;5 & # 39;;      ,,,public  a6 美元;=,& # 39;6 & # 39;;      ,,,public  function 测试()   ,,,{   ,,,,,,,echo  & # 39;测试# 39;;   ,,,}   }   $ a =, new  ();   foreach  (a 美元;as  k 美元;=祝辞,美元v), {   ,,,echo  k美元,& # 39;===& # 39;,v,美元,PHP_EOL;   }//a1===1//a2===2//a3===3//,a6===6

不管是方法还是受保护或者私有的变量,都无法遍历出来。只有公共的属性才能被遍历出来。其实,我们之前在讲设计模式时讲过的<强>迭代器模式强就是专门用来进行对象遍历的,而且PHP已经为我们准备好了相关的接口,我们只需要去实现这个接口就可以完成迭代器模式的创建了。具体的内容可以参考之前的设计模式系列文章:PHP设计模式之迭代器模式()

//,实现迭代器接口   class  B  implements 迭代器   {   ,,,private  var 美元;=,[];      ,,,public  function  __construct(数组)   ,,,{   ,,,,,,,if  (is_array(数组)美元),{   ,,,,,,,,,,,这个→美元var =,美元数组;   ,,,,,,,}   ,,,}      ,,,public  function 倒带()   ,,,{   ,,,,,,,echo “复卷\ n";   ,,,,,,,重置($ this→var);   ,,,}      ,,,public  function 目前()   ,,,{   ,,,,,,,var 美元;=,当前($ this→var);   ,,,,,,,echo “当前:,$ var \ n";   ,,,,,,,return  $ var;   ,,,}      ,,,public  function 关键()   ,,,{   ,,,,,,,var 美元;=,关键($ this→var);   ,,,,,,,echo “关键:,$ var \ n";   ,,,,,,,return  $ var;   ,,,}      ,,,public  function  next ()   ,,,{   ,,,,,,,var 美元;=,下一个($ this→var);   ,,,,,,,echo “下一个:,$ var \ n";   ,,,,,,,return  $ var;   ,,,}      ,,,public  function 有效的()   ,,,{   ,,,,,,,var 美元;=,这→美元当前的(),!==,假;   ,,,,,,,echo “有效:,{$ var} \ n";   ,,,,,,,return  $ var;   ,,,}   }      $ b =, new  B ([1,, 2,, 3,, 4]);      foreach  (b 美元;as  k 美元;=祝辞,美元v), {   ,,,echo  k美元,& # 39;===& # 39;,v,美元,PHP_EOL;   }//复卷//当前:,1//,有效:1//当前:,1//,关键:0//0===1   下://,,2//当前:,2//,有效:1//当前:,2//,关键:1//1===2//,下:3//当前:,3//,有效:1//当前:,3//,关键:2//2===3   下://,,4//当前:,4//,有效:1//当前:,4//,关键:3//3===4   下://,   当前://,//,有效:

假如今天的文章只是讲之前讲过的迭代器模式,那就太没意思了,所以,咱们还要来学习一个更有意思的应用。那就是让对象可以像数组一样进行操作。这个其实也是使用PHP早已为我们准备好的一个接口:ArrayAccess。

//,让类可以像数组一样操作   class  C  implements  ArrayAccess IteratorAggregate   {   ,,,private  container 美元;=,[];   ,,,public  function  __construct ()   ,,,{   ,,,,,,,这个→美元container =, (   ,,,,,,,,,,,“人,=祝辞,1,   ,,,,,,,,,,,“two",=祝辞,2,   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

PHP遍历对象的示例