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;
给定一个 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;