8

私は ArrayIterator でいくつかの問題を抱えています (実際、ArrayObject でも同じ問題です)。

すべての 99% で、拡張 ArrayIterator は配列のように動作し、うまく機能しています。

残念ながら、implode() は ArrayIterator (または ArrayObject) が与えられるのを好みません。

拡張された ArrayIterator によって実装する他のクラスや、オーバーライドする他のメソッドを示唆しているドキュメントはどこにもありません。

誰でもこれを機能させる方法を提案できますか? (注: implode を使用するたびに配列にキャストすることは解決策ではありません。この配列のようなオブジェクトが配列として正確に機能し、それを使用してコードを認識/ケア/キャストする必要がないためです)

4

2 に答える 2

10

最も簡単な正しい解決策は、たとえばiterator_to_arrayfeed を使用することです。implode

$traversable = /* your iterator, ArrayObject or any other type of Traversable */
echo implode(",", iterator_to_array($traversable));

これは、 で反復できるものであれば、期待どおりに機能しforeachます。

于 2013-09-06T11:40:10.717 に答える
0

配列をダウンキャストしてみてください((array) $arrayObject)implode(",", (array) $arrayObject);

于 2013-09-06T11:38:33.567 に答える