【php类与对象】遍历

不言
不言 原创
2023-03-23 18:48:02 933浏览

本篇文章给大家分享的内容是关于【php类与对象】遍历 ,有着一定的参考价值,有需要的朋友可以参考一下

遍历对象

PHP 5 提供了一种定义对象的方法使其可以通过单元列表来遍历

默认情况下,所有可见属性都将被用于遍历。

Example #1 简单的对象遍历(foreach 遍历所有其能够访问的可见属性。)<?phpclass MyClass{
    public $var1 = 'value 1';    public $var2 = 'value 2';    public $var3 = 'value 3';    
    protected $protected = 'protected var';    private   $private   = 'private var';    function iterateVisible() {
       echo "MyClass::iterateVisible:\n";       foreach($this as $key => $value) {           print "$key => $value\n";
       }
    }
}$class = new MyClass();foreach($class as $key => $value) {    print "$key => $value\n";
}echo "\n";$class->iterateVisible();?>

实现 Iterator 接口(预定义接口)。可以让对象自行决定如何遍历以及每次遍历时哪些值可用。

#接口摘要#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 )  //判断当前索引游标指向的元素是否有效  
}  

当一个实现了Iterator接口的对象,被foreach遍历时,会自动调用这些方法。

调用的循序是:rewind() -> valid() -> current() -> key() -> next()
Example #2 实现 Iterator 接口的对象遍历<?phpclass MyIterator implements Iterator{
    private $var = array();    public function __construct($array)
    {
        if (is_array($array)) {            $this->var = $array;
        }
    }    public function rewind() {
        echo "rewinding\n";
        reset($this->var);
    }    public function current() {
        $var = current($this->var);        echo "current: $var\n";        return $var;
    }    public function key() {
        $var = key($this->var);        echo "key: $var\n";        return $var;
    }    public function next() {
        $var = next($this->var);        echo "next: $var\n";        return $var;
    }    public function valid() {
        $var = $this->current() !== false;        echo "valid: {$var}\n";        return $var;
    }
}$values = array(1,2,3);$it = new MyIterator($values);foreach ($it as $a => $b) {    print "$a: $b\n";
}?>

相关推荐:

【php类与对象】匿名类

【php类与对象】重载

以上就是【php类与对象】遍历的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。