我今天偶然发现了这个PHP: Iterators页面,我想知道为什么甚至需要这些类。我想假设它们是有目的的,否则它们就不会出现在 PHP 中。当已经有非常简单的方法可以做到这些时,我很难看到这些项目的好处。
PHP 在成为一种更受人尊敬/面向对象的编程语言方面是否犯了错误?或者这样做真的有好处吗?
在 ArrayIterator 上的 PHP 评论中找到了一个很好的例子,说明了如何有 2 种方法:
<?php
$fruits = array(
"apple" => "yummy",
"orange" => "ah ya, nice",
"grape" => "wow, I love it!",
"plum" => "nah, not me"
);
$obj = new ArrayObject( $fruits );
$it = $obj->getIterator();
// How many items are we iterating over?
echo "Iterating over: " . $obj->count() . " values\n";
// Iterate over the values in the ArrayObject:
while( $it->valid() ) {
echo $it->key() . "=" . $it->current() . "\n";
$it->next();
}
// The good thing here is that it can be iterated with foreach loop
foreach ($it as $key=>$val)
echo $key.":".$val."\n";
/* Outputs something like */
Iterating over: 4 values
apple=yummy
orange=ah ya, nice
grape=wow, I love it!
plum=nah, not me
?>