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+MySQL的聊天室设计
Oct 09 PHP
收藏的一个php小偷的核心程序
Apr 09 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
Jun 15 PHP
php操作excel文件 基于phpexcel
Jul 02 PHP
php多次include后导致全局变量global失效的解决方法
Feb 28 PHP
php从数组中随机选择若干不重复元素的方法
Mar 14 PHP
php检查字符串中是否包含7位GSM字符的方法
Mar 17 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
Oct 29 PHP
php 生成加密公钥加密私钥实例详解
Jun 16 PHP
创建无限极分类树型结构的简单方法
Jun 20 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
Oct 11 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 14 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作的文本留言本的例子(五)
2006/10/09 PHP
php下载远程文件类(支持断点续传)
2008/11/14 PHP
PHP 第二节 数据类型之数值型
2012/04/28 PHP
php上传图片到指定位置路径保存到数据库的具体实现
2013/12/30 PHP
php简单实现查询数据库返回json数据
2015/04/16 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
2016/01/04 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
2017/06/21 PHP
[JS源码]超长文章自动分页(客户端版)
2007/01/09 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
js创建对象的区别示例介绍
2014/07/24 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
2015/11/26 Javascript
jquery获取复选框checkbox的值实现方法
2016/05/30 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
JavaScript数据结构之二叉树的遍历算法示例
2017/04/13 Javascript
微信小程序授权获取用户详细信息openid的实例详解
2017/09/20 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
实例详解带参数的 npm script
2019/05/28 Javascript
从零撸一个pc端vue的ui组件库( 计数器组件 )
2019/08/08 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
Python求算数平方根和约数的方法汇总
2016/03/09 Python
python设计模式大全
2016/06/27 Python
Python numpy生成矩阵、串联矩阵代码分享
2017/12/04 Python
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
python机器学习之KNN分类算法
2018/08/29 Python
python实现剪切功能
2019/01/23 Python
np.dot()函数的用法详解
2020/01/17 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
室内设计实习自我鉴定
2013/09/25 职场文书
工程项目经理任命书
2014/06/05 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
超级详细实用的pycharm常用快捷键
2021/05/12 Python
python3.7.2 tkinter entry框限定输入数字的操作
2021/05/22 Python
Go Plugins插件的实现方式
2021/08/07 Golang