本篇文章给大家分享的内容是关于【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类与对象】重载