接口Iterator
主要需要实现的方法:
abstract public mixed current ( void )
abstract public scalar key ( void )
abstract public void next ( void )
abstract public void rewind ( void )
abstract public boolean valid ( void )
在一个foreach中,首先会调用 rewind()方法,将指针置为开始位置,使用valid()方法检测是否合法,接着current(),再key()。如此一个循环结束,接着第二循环,先调用next()方法,valid(),current(),key(),如此不断反复直到valid()为false;所以可以发现的是再循环时,使用的是值传递,并不是传引用,所以对循环中的kv修改并不能对原迭代器重的数据起作用。