php foreach 参数强制类型转换的问题


Posted in PHP onDecember 10, 2010

所以,为了防止这样的信息出现,我使用foreach的时候,都会把参数进行强制类型转换,形势如下:
foreach((array)$arr as $key => $value);
这样做一直相安无事,就在前几天,突然出现了问题。我强制类型转换以后不能正常的调用object的方法了。

<?php 
class service implements Iterator{ 
function __construct($service_define,$filter=null){ 
$this->iterator = new ArrayIterator($service_define['list']); 
$this->filter = $filter; 
$this->valid(); 
} 
function current(){ 
return $this->current_object; 
} 
public function rewind() { 
$this->iterator->rewind(); 
} 
public function key() { 
return $this->iterator->current(); 
} 
public function next() { 
return $this->iterator->next(); 
} 
public function valid() { 
while($this->iterator->valid()){ 
if($this->filter()){ 
return true; 
}else{ 
$this->iterator->next(); 
} 
}; 
return false; 
} 
private function filter(){ 
$current = $this->iterator->current(); 
if($current){ 
$this->current_object = new Sameple($current); 
if($this->current_object){ 
return true; 
} 
} 
return false; 
} 
} 
class Sameple{ 
var $class_name; 
function __construct($class_name = null) { 
$this->class_name = $class_name; 
} 
function show(){ 
echo $this->class_name,'<br />'; 
} 
} 
$servicelist = array( 
'list' => array( 
'first', 
'second', 
'third', 
'fourth', 
), 
); 
$ser = new service($servicelist); 
foreach ($ser as $s) { 
$s->show(); 
} 
/* 
//执行报错的代码 使用了将$ser执行强制类型转换操作 
foreach ((array)$ser as $s) { 
$s->show(); 
}*/

之所以出现这样的问题就是,foreach不但可以遍历数组,还可以遍历实现了Iterator接口的类。

我以前只注意到了数组的情况,把实现了Iterator接口的类的情况给忽略了。以后一定会注意。
依次为记。

PHP 相关文章推荐
一个很方便的 XML 类!!原创的噢
Oct 09 PHP
十天学会php之第九天
Oct 09 PHP
PHP面向对象编程快速入门
Dec 14 PHP
PHP 上传文件大小限制
Jul 05 PHP
php实现上传图片生成缩略图示例
Apr 13 PHP
PHP高手需要要掌握的知识点
Aug 21 PHP
PHP实现通用alert函数的方法
Mar 11 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
Aug 18 PHP
PHP版本常用的排序算法汇总
Dec 20 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
Jan 10 PHP
snoopy 强大的PHP采集类使用实例代码
Dec 09 #PHP
PHPwind整合最土系统用户同步登录实现方法
Dec 08 #PHP
php iconv() : Detected an illegal character in input string
Dec 05 #PHP
php printf输出格式使用说明
Dec 05 #PHP
PHP执行zip与rar解压缩方法实现代码
Dec 05 #PHP
smarty模板嵌套之include与fetch性能测试
Dec 05 #PHP
php 学习资料零碎东西
Dec 04 #PHP
You might like
基于文本的搜索
2006/10/09 PHP
php中使用gd库实现下载网页中所有图片
2015/05/12 PHP
PHP实现的memcache环形队列类实例
2015/07/28 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
PHP实现的日历功能示例
2018/09/01 PHP
php实现大文件断点续传下载实例代码
2019/10/01 PHP
常用参考资料(手册)下载或者链接
2006/07/22 Javascript
Prototype Class对象学习
2009/07/19 Javascript
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
2013/08/29 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
浅析javascript的间隔调用和延时调用
2014/11/12 Javascript
基于Bootstrap分页的实例讲解(必看篇)
2017/07/04 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
vue router demo详解
2017/10/13 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
Webpack中雪碧图插件使用详解
2018/05/25 Javascript
vue2.0项目集成Cesium的实现方法
2019/07/30 Javascript
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
2019/08/22 Javascript
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
2019/09/02 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
通过 Django Pagination 实现简单分页功能
2019/11/11 Python
Tensorflow 多线程设置方式
2020/02/06 Python
Python 程序员必须掌握的日志记录
2020/08/17 Python
美国最大的团购网站:Groupon
2016/07/23 全球购物
工作失误检讨书范文大全
2014/01/13 职场文书
2014年学生资助工作总结
2014/12/18 职场文书
利用Nginx代理如何解决前端跨域问题详析
2021/04/02 Servers
python字符串常规操作大全
2021/05/02 Python
PostgreSQL自动更新时间戳实例代码
2021/11/27 PostgreSQL
一文解答什么是MySQL的回表
2022/08/05 MySQL