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 相关文章推荐
不用iconv库的gb2312与utf-8的互换函数
Oct 09 PHP
PHP 模板高级篇总结
Dec 21 PHP
Yii实现多按钮保存与提交的方法
Dec 03 PHP
彻底删除thinkphp3.1案例blog标签的方法
Dec 05 PHP
PHP CURL 多线程操作代码实例
May 13 PHP
PHP Try-catch 语句使用技巧
Feb 28 PHP
yii2实现根据时间搜索的方法
May 25 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
Jul 21 PHP
PHP应用跨时区功能的实现方法
Mar 21 PHP
PHP设计模式之简单工厂和工厂模式实例分析
Mar 25 PHP
Laravel使用RabbitMQ的方法示例
Jun 18 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
Oct 01 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调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
Laravel使用RabbitMQ的方法示例
2019/06/18 PHP
javascript深入理解js闭包
2010/07/03 Javascript
基于JQuery的访问WebService的代码(可访问Java[Xfire])
2010/11/19 Javascript
IE8下String的Trim()方法失效的解决方法
2013/11/08 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
提交按钮的name='submit'引起的js失效问题及原因
2015/02/25 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
JavaScript实现拖拽和缩放效果
2020/08/24 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
仅用500行Python代码实现一个英文解析器的教程
2015/04/02 Python
Python新手在作用域方面经常容易碰到的问题
2015/04/03 Python
详解重置Django migration的常见方式
2019/02/15 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
Python实现的银行系统模拟程序完整案例
2019/04/12 Python
django框架基于模板 生成 excel(xls) 文件操作示例
2019/06/19 Python
pycharm重命名文件的方法步骤
2019/07/29 Python
GUESS盖尔斯法国官网:美国时尚品牌
2016/09/23 全球购物
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
国际礼品店:GiftsnIdeas
2018/05/03 全球购物
工商管理本科毕业生求职信范文
2013/10/05 职场文书
力学专业毕业生自荐信
2013/11/17 职场文书
就业推荐表自我鉴定
2014/03/21 职场文书
《和田的维吾尔》教学反思
2014/04/14 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
2014年营业员工作总结
2014/11/18 职场文书
出国导师推荐信
2015/03/25 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
小学体育队列队形教学反思
2016/02/16 职场文书
Python中requests做接口测试的方法
2021/05/30 Python