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 面向对象 PHP5 中的常量
May 05 PHP
20个PHP常用类库小结
Sep 11 PHP
PHP中extract()函数的妙用分析
Jul 11 PHP
PHP以指定字段为索引返回数据库所取的数据数组
Jun 30 PHP
php实现图形显示Ip地址的代码及注释
Jan 20 PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
Jun 09 PHP
php实现用已经过去多长时间的方式显示时间
Jun 05 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
May 09 PHP
php微信公众平台交互与接口详解
Nov 28 PHP
php array_reverse 以相反的顺序返回数组实例代码
Apr 11 PHP
YII2自动登录Cookie总是失效的解决方法
Jun 28 PHP
PHP实现的折半查找算法示例
Dec 19 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
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
phpwind中的数据库操作类
2007/01/02 PHP
浅析PHP Socket技术
2013/08/02 PHP
一组PHP可逆加密解密算法实例代码
2014/01/21 PHP
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
在网页中使用document.write时遭遇的奇怪问题
2010/08/24 Javascript
如何用ajax来创建一个XMLHttpRequest对象
2012/12/10 Javascript
深入解析JavaScript中的变量作用域
2013/12/06 Javascript
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
基于jQuery实现自动轮播旋转木马特效
2015/11/02 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
第一次接触JS require.js模块化工具
2016/04/17 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
2016/11/25 Javascript
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
React Native 图片查看组件的方法
2018/03/01 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
Vue.js实现表格渲染的方法
2018/09/07 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
Python 解析XML文件
2009/04/15 Python
python使用arcpy.mapping模块批量出图
2017/03/06 Python
python3.4用函数操作mysql5.7数据库
2017/06/23 Python
解决Pycharm界面的子窗口不见了的问题
2019/01/17 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
一波HTML5 Canvas基础绘图实例代码集合
2016/02/28 HTML / CSS
纽约手袋品牌:KARA
2018/03/18 全球购物
财务支持类个人的自我评价
2014/02/14 职场文书
初中三年毕业生的自我评价分享
2014/02/14 职场文书
通信工程求职信
2014/07/16 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
员工保密协议书
2014/09/27 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
迎新生欢迎词
2015/01/23 职场文书
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers
Linux中如何安装并部署Redis
2022/04/18 Servers