对象的遍历,跟数组的遍历,一样!
其实,只能遍历出对象的 “实例属性数据”。
foreach( $对象名 as $key => $value){
//这里就可以处理$key和$value
//但注意:
1, $key表示的是对象 的 “属性”,$value是其对应值;
2, 这里能够遍历出来的属性,只能是在该范围中的“可访问属性”(就是要考虑访问控制权限)
}
实例一:
class A{ public $p1 = 1; protected $p2 = 2; private $p3 = 3; static $p4 = 4;//静态属性 } $obj1 = new A(); foreach($obj1 as $k => $v){ echo "<br />属性$k : $v"; }
结果:
属性p1 : 1
实例二:
class B{ public $p1 = 1; protected $p2 = 2; private $p3 = 3; static $p4 = 4;//静态属性 function showAllProperties(){ foreach($this as $k => $v){ echo "<br />属性$k : $v"; } } } $obj2 = new B(); foreach($obj2 as $k => $v){ echo "<br />属性$k : $v"; } echo "<br />----------------<br />"; $obj2->showAllProperties();
结果:
属性p1 : 1
----------------
属性p1 : 1
属性p2 : 2
属性p3 : 3
可见实例二通过类中的方法,访问到了遍历对象时不可见的属性,但是静态属性仍然不可见。