php的对象可以遍历吗,【php类与对象】遍历

本文详细讲解了PHP中如何通过foreach遍历类与对象,包括默认遍历方式和实现Iterator接口的自定义遍历。介绍了如何使用Iterator接口来控制遍历流程和访问权限。还涵盖了匿名类和重载的相关内容,适合深入理解PHP对象模型的开发者阅读。
摘要由CSDN通过智能技术生成

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

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值