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 判断数组是几维数组
Mar 20 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
May 15 PHP
Laravel 4.2 中队列服务(queue)使用感受
Oct 30 PHP
php 删除cookie方法详解
Dec 01 PHP
PHP实现的简单mock json脚本分享
Feb 10 PHP
php中define用法实例
Jul 30 PHP
php实现图片上传时添加文字和图片水印技巧
Apr 18 PHP
PHP中spl_autoload_register()函数用法实例详解
Jul 18 PHP
php is_writable判断文件是否可写实例代码
Oct 13 PHP
php中bind_param()函数用法分析
Mar 28 PHP
PHP编程计算文件或数组中单词出现频率的方法
May 22 PHP
laravel withCount 统计关联数量的方法
Oct 10 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中webservice实现的简单架构方法及实例
2015/02/03 PHP
简单介绍PHP的责任链编程模式
2015/08/11 PHP
php实现的后台表格分页功能示例
2017/10/23 PHP
checkbox设置复选框的只读效果不让用户勾选
2013/08/12 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
2015/11/17 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
2017/04/19 Javascript
React简单介绍
2017/05/24 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
layui输入框中只允许输入整数的实现方法
2019/09/18 Javascript
JS正则表达式验证端口范围(0-65535)
2020/01/06 Javascript
[01:17]Ti4 循环赛第一日回顾
2014/07/11 DOTA
[56:42]完美世界DOTA2联赛循环赛 Matador vs Forest 第二场 11.06
2020/11/06 DOTA
windows系统下Python环境的搭建(Aptana Studio)
2017/03/06 Python
Python实现XML文件解析的示例代码
2018/02/05 Python
Python初学者需要注意的事项小结(python2与python3)
2018/09/26 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
2019/10/14 Python
numpy按列连接两个维数不同的数组方式
2019/12/06 Python
python统计文章中单词出现次数实例
2020/02/27 Python
python 日志模块 日志等级设置失效的解决方案
2020/05/26 Python
python中怎么表示空值
2020/06/19 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
如何通过Python实现RabbitMQ延迟队列
2020/11/28 Python
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
泰国折扣酒店预订:Hotels2Thailand
2018/03/20 全球购物
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/09/18 面试题
物业客服专员岗位职责
2013/11/30 职场文书
物流仓管员岗位职责
2013/12/04 职场文书
社会实践的活动方案
2014/08/22 职场文书
个人四风问题对照检查材料
2014/10/01 职场文书
拾金不昧表扬稿
2015/01/16 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
uwsgi+nginx代理Django无法访问静态资源的解决
2021/05/10 Servers