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采集速度探究总结(原创)
Apr 18 PHP
PHP中基本符号及使用方法
Mar 23 PHP
DedeCMS 核心类TypeLink.class.php摘要笔记
Apr 07 PHP
php设计模式 Proxy (代理模式)
Jun 26 PHP
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
Jun 03 PHP
PHP判断是否连接上网络的方法
Jul 01 PHP
php 使用fopen函数创建、打开文件详解及实例代码
Sep 24 PHP
thinkPHP中volist标签用法示例
Dec 06 PHP
php 5.4 全新的代码复用Trait详解
Jan 05 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
Apr 09 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
Nov 26 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 PDOStatement:bindParam插入数据错误问题分析
2013/11/13 PHP
php apache开启跨域模式过程详解
2019/07/08 PHP
php实现图片压缩处理
2020/09/09 PHP
JavaScript使用prototype定义对象类型
2007/02/07 Javascript
js post方式传递提交的实现代码
2010/05/31 Javascript
前端开发过程中浏览器版本的两种判定方法
2013/10/30 Javascript
javascript实现连续赋值
2015/08/10 Javascript
jQuery.extend 函数及用法详细
2015/09/06 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
2017/03/30 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
通过一次报错详细谈谈Point事件
2018/05/17 Javascript
vue中动态添加class类名的方法
2018/09/05 Javascript
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
Python利用matplotlib生成图片背景及图例透明的效果
2017/04/27 Python
在Python中定义一个常量的方法
2018/11/10 Python
Python寻找两个有序数组的中位数实例详解
2018/12/05 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
2019/03/29 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
python设置表格边框的具体方法
2020/07/17 Python
css3中less实现文字长阴影(long shadow)
2020/04/24 HTML / CSS
Mavi牛仔裤美国官网:土耳其著名牛仔品牌
2016/09/24 全球购物
Emma Bridgewater官网:英国餐具制造商
2019/11/24 全球购物
职业生涯规划怎么写
2013/12/29 职场文书
个人自我评价和职业目标
2014/01/24 职场文书
母亲节感恩寄语
2014/02/21 职场文书
公民代理授权委托书
2014/09/24 职场文书
缓刑人员思想汇报
2014/10/11 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
行风评议整改报告
2014/11/06 职场文书
就业推荐表导师评语
2014/12/31 职场文书
房屋质量投诉书
2015/07/02 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书
导游词之上海豫园
2019/10/24 职场文书