如何使用ArrayIterator或ArrayObject使用implode?

时间:2013-09-06 11:33:27

标签: php implode arrayiterator

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

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

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

我无法在文档中找到任何暗示扩展ArrayIterator要实现的任何其他类的文档,也没有任何其他方法可以覆盖。

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

2 个答案:

答案 0 :(得分:8)

最简单的正确解决方案是使用iterator_to_array来提供implode,例如

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

对于可以使用foreach迭代的任何内容,这将按预期工作。

答案 1 :(得分:0)

尝试向下转换数组((array) $arrayObject)implode(",", (array) $arrayObject);