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 相关文章推荐
PHP 和 HTML
Oct 09 PHP
定制404错误页面,并发信给管理员的程序
Oct 09 PHP
PHP 得到根目录的 __FILE__ 常量
Jul 23 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
Jun 13 PHP
PHP中使用imagick生成PSD文件缩略图教程
Jan 26 PHP
PHP中的traits简单使用实例
May 13 PHP
PHP查看当前变量类型的方法
Jul 31 PHP
PHP读取PPT文件的方法
Dec 10 PHP
php之可变变量的实例详解
Sep 12 PHP
Yii2压缩PHP中模板代码的输出问题
Aug 28 PHP
PHP判断是否是微信打开还是浏览器打开的方法
Feb 27 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 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
php图片验证码代码
2008/03/27 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
2016/03/22 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
2016/10/11 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
基于vue2的table分页组件实现方法
2017/03/20 Javascript
JavaScript数组和对象的复制
2017/03/21 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
JS中的Replace()传入函数时的用法详解
2017/09/11 Javascript
nodeJS微信分享
2017/12/20 NodeJs
JavaScript插入排序算法原理与实现方法示例
2018/08/06 Javascript
vue-自定义组件传值的实例讲解
2018/09/18 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
2018/12/19 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
使用xampp将angular项目运行在web服务器的教程
2019/09/16 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
2020/07/23 Javascript
python的urllib模块显示下载进度示例
2014/01/17 Python
python中遍历文件的3个方法
2014/09/02 Python
python查看列的唯一值方法
2018/07/17 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
Python中six模块基础用法
2019/12/08 Python
基于OpenCV的路面质量检测的实现
2020/11/04 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
HTML5的结构和语义(3):语义性的块级元素
2008/10/17 HTML / CSS
HTML块级标签汇总(小篇)
2016/07/13 HTML / CSS
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
如果Session Bean得Remove方法一直都不被调用会怎么样
2012/07/14 面试题
高中生学习总结的自我评价范文
2013/10/13 职场文书
建筑专业毕业生推荐信
2013/11/21 职场文书
元旦晚会主持词
2014/03/24 职场文书
班风学风建设方案
2014/05/06 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
Golang流模式之grpc的四种数据流
2022/04/13 Golang
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python