php foreach 参数强制类型转换的问题

2015-01-24信息快讯网
所以,为了防止这样的信息出现,我使用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 preg_filter执行一个正则表达式搜索和替换
php中echo()和print()、require()和include()等易混淆函数的区别
修改PHP的memory_limit限制的方法分享
for循环连续求和、九九乘法表代码
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
PHP反转字符串函数strrev()函数的用法
PHP函数spl_autoload_register()用法和__autoload()介绍
PHP中创建空文件的代码[file_put_contents vs touch]
shopex主机报错误请求解决方案(No such file or directory)
采用PHP函数memory_get_usage获取PHP内存清耗量的方法
PHP性能优化工具篇Benchmark类调试执行时间
php的chr和ord函数实现字符加减乘除运算实现代码
PHP循环语句笔记(foreach,list)
如何在symfony中导出为CSV文件中的数据
PHP pathinfo()获得文件的路径、名称等信息说明
兼容firefox,chrome的网页灰度效果
php 高性能书写
snoopy 强大的PHP采集类使用实例代码
php iconv() : Detected an illegal character in input string
smarty模板嵌套之include与fetch性能测试
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
windows中PHP5.2.14以及apache2.2.16安装配置方法第1/2页
php表单转换textarea换行符的方法
PHPnow安装服务[apache_pn]失败的问题的解决方法
PHP获取表单textarea数据中的换行问题
用PHP将数据导入到Foxmail的实现代码
php中var_export与var_dump的区别分析
PHP Stream_*系列函数
由php的call_user_func传reference引发的思考
PHP 多维数组排序(usort,uasort)
PHP 数组遍历方法大全(foreach,list,each)
PHP XML error parsing SOAP payload on line 1
php for 循环语句使用方法详细说明
PHP foreach循环使用详解与实例代码
PHP中冒号、endif、endwhile、endfor使用介绍
©2014-2024 dbsqp.com