Php 迭代器 foreach 对象属性

给定一个类


class Obj {

 public $a =1;

 public $b = 2;

}

和脚本一样


$obj = new Obj();


foreach($obj as $key => $value)

    echo $key, $value;

我可以轻松输出对象内部的内容,但是如果类是这样的,为什么它不起作用


class SomeClass() implements Iterator {

...

}

Iterator 接口是否禁止我在外部执行 foreach 并强制我为此目的使用其抽象函数?


梦里花落0921
浏览 115回答 1
1回答

紫衣仙女

当类实现 时Iterator,foreach会迭代它所代表的集合的元素。当类没有实现时Iterator,它会回退到迭代属性。如果要迭代此类的属性,请将对象转换为数组:foreach ((array)$obj as $key => $value)     echo $key, $value;
打开App,查看更多内容
随时随地看视频慕课网APP