本帖最后由 liebezero 于 2010-04-04 15:31:53 编辑

解决方案 »

  1.   

    我谷歌一下.意外发现点资料.iterator接口是内置的.而且foreach时候.如果是对象.会调用iterator接口.
    我还是不明白.函数怎么被调用了.返回值返回到哪里去了?我很疑惑
      

  2.   

    你发现的没错,
    对于foreach来说,遇到实现了Iterator接口的类的对象的遍历,则使用Iterator接口的相关函数来进行foreach.
    如果是数组,则按熟知的常规来foreach。
    查了下,Iterator接口的对象就是ZEND_ITER_OBJECT类。其他的是ZEND_ITER_PLAIN_OBJECT类。请参考:http://www.laruence.com/2008/10/31/574.html
      

  3.   

    执行顺序:
    __construct
    rewind
    current
    valid
    current
    key
    0=>1
    next
    current
    valid
    current
    key
    1=>2
    next
    current
    valid
    current
    key
    2=>3
    next
    current
    valid
      

  4.   

    请将函数中的$val换成任何一种合法变量名即可回答此问题
      

  5.   

    大概明白了.谢谢.C++的迭代器对我影响比较大.而且PHP真的很随意我感觉.随意意味着自由.自由也以为的风险
      

  6.   

    关于第三个问题,呵呵  的确是因为php里没有声明变量这个步骤。
    放在c++或java里 那样在函数里用的话 肯定是要先声明的  呵呵