我在ArrayIterator上遇到了一些问题(实际上,ArrayObject也有同样的问题)。
对于99%的所有内容,我的扩展ArrayIterator的行为就像一个数组,并且工作得很好。
不幸的是,implode()不喜欢被授予一个ArrayIterator (或ArrayObject)。
我在任何地方都找不到任何文档,这些文档建议使用扩展的ArrayIterator实现任何其他类,也不能找到任何其他要重写的方法。
有人能给我建议一下该怎么做吗?(注意:每次使用内爆代码时,对数组的转换都不是一个解决方案,因为我希望这个类似数组的对象精确地作为数组工作,而不是让使用它的代码必须知道/护理/转换)
发布于 2013-09-06 11:40:10
最简单的正确的解决方案是使用iterator_to_array来喂养implode。
$traversable = /* your iterator, ArrayObject or any other type of Traversable */
echo implode(",", iterator_to_array($traversable));对于任何可以使用foreach进行迭代的东西,这都会像预期的那样工作。
发布于 2013-09-06 11:38:33
尝试向下转换数组((array) $arrayObject):implode(",", (array) $arrayObject);
https://stackoverflow.com/questions/18656855
复制相似问题