问答详情
源自:3-2 ArrayIterator迭代器

ArrayObject 的 getiteratpr方法得到的迭代器与 ArrayIterator实例化后的迭代器有什么不一样么???

16行 $obj = new ArrayObject($fruits)  然后 $it = $obj->getiterator();

为什么不直接$it = new ArrayIterator;

还有个问题,翻看php手册发现ArrayObject的getiterator方法是个静态方法,而用静态方法调用时报错,用"->"调用却可以。有点费解

提问者:楞里格楞 2015-08-13 20:29

个回答

  • 慕函数1393055
    2016-06-26 15:31:24

    第一个问题:当你想多次遍历相同数组时你需要实例化ArrayObject,然后让这个实例创建一个ArrayIteratror实例 ,然后使用foreach或者 手动调用getIterator()方法

    第二个问题:ArrayObject的getiterator也不是一个静态方法,这个你当ArrayObject::getiterator();这样使用的时候就会报错,错误:getiterator非静态方法数组对象