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安全配置
Dec 06 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 PHP
php 删除记录同时删除图片文件的实现代码
May 12 PHP
PHP 可阅读随机字符串代码
May 26 PHP
请离开include_once和require_once
Jul 18 PHP
正确的PHP匹配UTF-8中文的正则表达式
May 13 PHP
php利用递归实现删除文件目录的方法
Sep 23 PHP
php删除二维数组中的重复值方法
Mar 12 PHP
php高清晰度无损图片压缩功能的实现代码
Dec 09 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
Oct 11 PHP
php redis setnx分布式锁简单原理解析
Oct 23 PHP
PHP 实现重载
Mar 09 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/09/07 PHP
PHP 安全检测代码片段(分享)
2013/07/05 PHP
php调用Google translate_tts api实现代码
2013/08/07 PHP
PHP中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
php绘制一条直线的方法
2015/01/24 PHP
PHP查询快递信息的方法
2015/03/07 PHP
PHP简单创建压缩图的方法
2016/08/24 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
实例讲解PHP验证邮箱是否合格
2019/01/28 PHP
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
JavaScript实现重置表单(reset)的方法
2015/04/02 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
2015/09/06 Javascript
jquery实现页面常用的返回顶部效果
2016/03/04 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
vue将毫秒数转化为正常日期格式的实例
2018/09/16 Javascript
详解vue在项目中使用百度地图
2019/03/26 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
Python完全新手教程
2007/02/08 Python
Python三元运算实现方法
2015/01/12 Python
python寻找list中最大值、最小值并返回其所在位置的方法
2018/06/27 Python
Python单链表原理与实现方法详解
2020/02/22 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
python 调用API接口 获取和解析 Json数据
2020/09/28 Python
python中spy++的使用超详细教程
2021/01/29 Python
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
移动端html5 meta标签的神奇功效
2016/01/06 HTML / CSS
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
面向对象编程OOP的优点
2013/01/22 面试题
保护动物的标语
2014/06/11 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
PHP命令行与定时任务
2021/04/01 PHP
深入理解margin塌陷和margin合并的解决方案
2021/06/26 HTML / CSS