8

我在使用 ArrayIterator 时遇到了一些问题(实际上,使用 ArrayObject 时也遇到了同样的问题)。

对于 99% 的所有内容,我扩展的 ArrayIterator 的行为就像一个数组并且运行良好。

不幸的是,implode() 不喜欢被赋予一个 ArrayIterator(或 ArrayObject)。

我无法在文档中发现任何建议通过扩展 ArrayIterator 实现的任何其他类,也找不到任何其他要覆盖的方法。

谁能建议如何使它工作?(注意:每次使用 implode 时都转换为数组不是解决方案,因为我希望这个类似数组的对象完全作为数组工作,并且没有使用它的代码必须知道/关心/转换)

4

2 回答 2

10

最简单的正确解决方案是用于iterator_to_array喂食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 回答