我有一個實現Iterator
並擁有2個數組的對象:「entries」和「pages」。每當我循環訪問這個對象時,我想修改這個entries數組,但是我得到了錯誤An iterator cannot be used with foreach by reference
,我在PHP 5.2中看到了這個錯誤。PHP迭代器不能與foreach一起使用引用
我的問題是,我如何使用Iterator
類來改變循環對象的值,而使用foreach
呢?
我的代碼:
//$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
@MuppetGrinder因爲我在很多地方使用這些方法,所以我不想每次都檢查,而只是在一個地方。 – shiznatix