`

【面试题】使对象可以像数组一样进行foreach循环,要求属性必须是私有

阅读更多

   主旨:PHP5提供了一种迭代(iteration)对象的功能,就像使用数组那样,可以通过foreach 来遍历对象中的属性。默认情况下,在外部迭代只能得到外部可见的属性的值,可在内部迭代自己的外部迭代器或类的接口。

Iterator extends Traversable {
     /* 方法 */
    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 )
}

 

<?php
    class Sample implements iterator{
      private $var = array(1,2,3,4,5);
      public function __construct(){}
      public function rewind(){ reset($this->var);}
      public function current(){return current($this->var);}
      public function key(){return key($this->var);}
      public function next(){return next($this->var);}
     public function valid(){return ($this->current()!==false);}
    }
    $s = new Sample();
   foreach($s as $k=>$v){ echo $k.'='.$v.'<br/>';}
?>

 

分享到:
评论

相关推荐

    .NET经典面试题(.NET面试集锦 全)

    本资源摘要信息涵盖了.NET经典面试题的知识点,涉及到C#语言、ASP.NET Web开发、面向对象编程、数据结构和算法等方面。 1. 访问权限修饰符 * private:私有成员,在类的内部才可以访问。 * protected:保护成员,...

    .net面试题

    C#中的索引器允许对象像数组一样被访问,不仅限于数字索引,可以自定义任意类型的索引。 计算1-2+3-4+...+m的和,可以通过循环判断当前项的奇偶性,累加或累减。这里的实现是通过TextBox控件获取用户输入的m值,...

    N道c#面试题(经典奉献)

    【C#面试题详解】 1. **Property与Attribute的区别**: Property是C#中用于封装类内部数据的访问机制,提供了一种控制对私有字段的访问方式,它可以带有getter和setter方法,确保数据的安全性。Attribute则是一种...

    Asp.net面试题

    ### ASP.NET面试题详解 #### 一、反射与序列化 **反射**是.NET框架提供的一种强大机制,允许运行时程序动态地获取自身的结构信息,包括类型、成员、方法等,并能够通过这些信息来创建对象实例、调用方法或者设置...

    面试题资源,涉及vue,js,node,html,css,webpack等等

    4. 数组和对象的遍历:数组和对象可以使用for in、forEach、for-of等多种方式进行遍历。 5. map和forEach的区别:forEach方法,是最基本的方法,就是遍历与循环,默认有3个传参:分别是遍历的数组内容item、数组...

    Asp.net面试题大全(有答案)

    【Asp.net面试题大全(有答案)】 Asp.net技术是Microsoft开发的一种Web应用程序框架,主要用于构建动态网站、Web应用程序和服务。以下是一些Asp.net面试中的常见问题及其答案,帮助.net程序员准备面试。 1. ...

    php 面试题

    以下是一些可能会出现在PHP面试中的关键话题,根据提供的描述,我们可以推测这些面试题可能涵盖了从基础知识到更高级的SVN...通过解答这些面试题,求职者可以展示自己的技能水平和解决问题的能力,为成功入职奠定基础。

    asp.net初级程序员面试题

    - 索引器允许对象像数组一样使用,不局限于数字索引,可以自定义任何类型的索引。 10. 求奇数和序列之和: - 示例代码展示了计算1到m(包括m)中所有奇数的和,对于偶数则减去。实际上,这个序列是交错正负数的...

    最全的ASP.NET面试130题(带答案)

    本文档提供了最全面的 ASP.NET 面试题,涵盖了多个方面的知识点,包括面向对象编程、委托、事件、排序算法、索引器、B/S 结构的系统设计等。 1. 访问权限修饰符 在面向对象编程中,访问权限修饰符是非常重要的, ...

    java面试题基础面试题

    为了在Java面试中脱颖而出,了解并掌握基础面试题是至关重要的。这里,我们将深入探讨Java的基础知识点,帮助你为面试做好充分准备。 1. **Java基础知识**: - **数据类型**:Java分为两种数据类型:基本类型(如...

    c语言面试题及答案

    尽管标题和描述提到的是“C语言面试题及答案”,但实际内容涉及的是C#的相关知识点。因此,本回答将围绕C#来展开。 ### C#面试题知识点汇总 #### 1. Property与Attribute的区别及其用途 - **Property(属性)**:...

    .net 最全最新面试题

    9. **C#中的索引器**:索引器允许类像数组一样被访问,但不局限于数字索引。索引器可以使用任意类型作为索引,通过`this[索引]`语法实现。 10. **计算序列和**:给定的表达式是交替加减序列,可以使用循环逐个累加...

    ASP.NET面试题大全(Word)

    - 索引器允许类像数组一样通过下标访问其成员,不仅可以使用数字,还可以自定义其他类型作为索引。 10. 数列求和: - 给定一个奇数m,表达式1-2+3-4+...+m的求和可以通过循环计算,对每个数判断奇偶性,奇数项加...

    很全面的asp.net c#面试题

    根据给定文件的信息,我们可以总结出一系列关于ASP.NET与C#的重要知识点,这些知识点涵盖了面试中常见的技术问题,包括但不限于反射、序列化、数组到列表的转换、数据源的使用、面向对象编程的基础概念以及ADO.NET的...

    C#和ASP面试题集合

    示例代码使用`foreach`循环遍历当前页面的所有控件,检查类型并设置TextBox的Text属性为空字符串。 8. 冒泡排序算法实现: 冒泡排序是一种简单的排序算法,通过重复遍历数组并比较相邻元素,交换位置以达到排序的...

    asp.net面试题

    要将数组复制到ArrayList,可以通过`foreach`循环逐个添加元素,使用`Copy`方法,或使用`ArrayList.Adapter`方法。示例代码展示了这三种方法。 4. **DataGrid数据源**:DataGrid控件可以绑定到多种数据源,包括...

    java经典面试题

    ### Java经典面试题知识点梳理 #### J2SE基础 1. **九种基本数据类型的大小,及其封装类**: - Java提供了八种基本数据类型(`byte`, `short`, `int`, `long`, `float`, `double`, `boolean`, `char`),每种类型...

Global site tag (gtag.js) - Google Analytics