如何使用ArrayIterator或ArrayObject使用implode?

Oli*_*ber 6 php implode arrayiterator

我在使用ArrayIterator时遇到了一些问题(实际上,与ArrayObject相同的问题).

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

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

我无法在文档中找到任何建议通过扩展ArrayIterator实现任何其他类的文档,也没有任何其他方法可以覆盖.

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

Jon*_*Jon 8

最简单的正确解决方案是iterator_to_array用来喂食implode,例如

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

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