`

【面试题】使对象可以像数组一样进行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中级程序员_面试题

    ORM 的核心目标是在面向对象的应用程序和关系型数据库之间提供一个桥梁,使得开发人员可以像操作对象一样操作数据库。 ORM 主要原理如下: - 使用反射机制来解析对象和数据库表之间的映射关系。 - 提供了一组 API ...

    很全面的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