Php 对象属性的迭代器 foreach

Php Iterator foreach on object properties

给定一个 class

class Obj {
 public $a =1;
 public $b = 2;
}

和类似的脚本

$obj = new Obj();

foreach($obj as $key => $value)
    echo $key, $value;

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

class SomeClass() implements Iterator {
...
}

Iterator接口是不是禁止我在外面做foreach并强迫我为此使用它的抽象函数? Tyvm.

当 class 实现 Iterator 时,foreach 遍历它所代表的集合的元素。当 class 没有实现 Iterator 时,它回退到迭代属性。

如果要迭代此 class 的属性,请将对象转换为数组:

foreach ((array)$obj as $key => $value)
    echo $key, $value;