【发布时间】:2015-06-30 04:06:36
【问题描述】:
我有一个对象,它实现了Iterator 并拥有 2 个数组:“条目”和“页面”。每当我遍历这个对象时,我都想修改条目数组,但我收到错误 An iterator cannot be used with foreach by reference,我看到该错误始于 PHP 5.2。
我的问题是,如何在使用foreach 的同时使用Iterator 类来更改循环对象的值?
我的代码:
//$flavors = instance of this class:
class PaginatedResultSet implements \Iterator {
private $position = 0;
public $entries = array();
public $pages = array();
//...Iterator methods...
}
//looping
//throws error here
foreach ($flavors as &$flavor) {
$flavor = $flavor->stdClassForApi();
}
这样做的原因是,有时$flavors 将不是我的类的一个实例,而只是一个简单的数组。无论它是什么类型,我都希望能够轻松地修改这个数组。
【问题讨论】:
-
为什么不先检查它是一个类还是一个数组,然后适当地对待它呢?
-
@MuppetGrinder 因为我在很多地方都使用了这些方法,我不想每次都进行检查,而是只在一个地方进行。