我在使用ArrayIterator时遇到了一些问题(实际上,ArrayObject存在同样的问题)。
对于99%的所有内容,我的扩展ArrayIterator表现得像一个数组,并且运行良好。
不幸的是,implode()不喜欢被赋予ArrayIterator(或ArrayObject)。
我无法在文档中找到任何暗示扩展ArrayIterator要实现的任何其他类的文档,也没有任何其他方法可以覆盖。
有谁能建议如何让这个工作? (注意:每次使用implode时都要转换为数组不是解决方案,因为我希望这个类似数组的对象能够完全作为一个数组工作,并且不需要使用它来代码知道/关心/强制转换)
答案 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);