草庐IT

ITERATOR

全部标签

php - 尝试理解 php 中的 Iterator 接口(interface)

我正在阅读http://php.net/manual/en/class.iterator.php,但很难理解示例#1的基本用法。问题:var_dump(__METHOD__);我知道你可以在这里使用变量,例如:var_dump($count),但是METHOD不是变量,还是全局变量/常量?foreach($itas$key=>$value){var_dump($key,$value);echo"\n";}如果我把它改成:foreach($itas$key=>$value){}如果我运行脚本,它仍然可以显示结果,为什么?var_dump($key,$value);结果是int0strin

php - 可迭代对象的正确 phpdoc 注释?

我在尝试为以下代码示例获取正确的自动完成时遇到了一些问题。我在Win7机器上使用PHPStorm7。首先只是一个简单的类。/***ClassmyObject*/classmyObject{/***somemethod*/publicfunctionmyMethod(){//dosomething}}这个是集合类,它可以包含先前类的多个实例并实现了IteratorAggregate接口(interface)。/***ClassmyCollection*/classmyCollectionimplementsIteratorAggregate{/***@varmyObject[]*/pro

php - 通过 exec() 将 DirectoryIterator 的实例传递给另一个脚本未按预期工作

我有一个页面正在为目录中的每个文件执行脚本:$dir=newDirectoryIterator('/var/www/OCR3/upload_pending/');foreach($diras$fileinfo){exec("phpmanual_doc_proccessor.php$fileinfo");echo"phpmanual_doc_proccessor.php$fileinfo"."Sentforproccessing";}转到此脚本:$fileinfo=$argv[1];if(!$fileinfo->isDot()){print_r($fileinfo->getFilenam

php - 有效搜索 php 迭代器

我有一个自定义迭代器(准确地说是TokenIterator,它迭代标记化的php代码)。项目是简单的对象(添加了一些规范化方法的“属性包”)我必须实现搜索功能,如果1.一个迭代器包含另一个或2.两个(或更多)迭代器重叠(有一些参数化)。目前我使用天真的方法来(1)-O(NxM)双循环搜索,并且(2)尚未实现。在开始重新实现真正智能的字符串搜索算法之前,我想知道是否存在一些有效的实现?也许某些深埋在某些框架或通用库中以供重用的东西?哪种算法最适合这里? 最佳答案 首先想到的是您在谈论集合操作,迭代器可以说不是最佳解决方案。我不知道您的

php - iterator_to_array 截断输出

FROMPHPDOCiterator_to_array—Copytheiteratorintoanarrayarrayiterator_to_array(Traversable$iterator[,bool$use_keys=true])它适用于所有Traversable接口(interface),但为什么我在以下代码中输入错误:$data=array(0=>array(0=>1,),1=>array(0=>2,),2=>array(0=>3,1=>4,2=>5,),3=>array(0=>6,),4=>array(0=>7,),);$it=newRecursiveIteratorIt

php - PHP(初学者指南)示例脚本中的未定义值错误

希望有人可以帮助我确定如何从我从VikramVaswani的PHP初学者指南中复制的示例脚本中初始化此变量($value)。我在php.ini中打开了display_erors值,它在浏览器中返回了这个错误。注意:undefinedvariable:citiesinC:\BitNami\wordpress-3.6-0\apache2\htdocs\associative-array.phponline23警告:第23行为C:\BitNami\wordpress-3.6-0\apache2\htdocs\associative-array.php中的foreach()提供的参数无效这是我

php - 为什么对象被认为是不可迭代的,尽管它们实际上是可迭代的?

PHP7.1添加了新的is_iterable函数来检查一个变量是否可以被迭代。但是,尽管您可以遍历对象属性,is_iterable会为它们返回false。这似乎是有意为之,因为它已被记录在案,而且我找不到任何关于该问题的PHP错误,但我想知道为什么这样做?foo='bar';var_dump(is_iterable($a));foreach($aas$key=>$value){var_dump($key,$value);}输出booleanfalsestring'foo'(length=3)string'bar'(length=3)但我希望它能输出booleantruestring'f

php - SplPriorityQueue::next() 正在删除项目

我想知道如何多次迭代SplHeap或SplPriorityQueue。next()方法删除最后一项,因此第二个foreach(或for)没有得到任何结果。例子:insert('A',1);$teste->insert('B',3);$teste->insert('D',5);$teste->insert('C',2);$teste->insert('A',4);echo'';var_dump($teste->count());echo'';foreach($testeas$t)var_dump($t);echo'';var_dump($teste->count());返回:int(5)

php - RecursiveIteratorIterator 中 next() 和 nextElement() 的区别

RecursiveIteratorIterator::next()和RecursiveIteratorIterator::nextElement()有什么区别?文档略有不足:RecursiveIteratorIterator::next():RecursiveIteratorIterator::next—MoveforwardtothenextelementRecursiveIteratorIterator::nextElement():RecursiveIteratorIterator::nextElement—Nextelement...Calledwhenthenexteleme

php - 在 PHP 中可以使用多个迭代器吗?

也请检查VolkerK的答案,他提供了另一种解决方案,但我无法将两个帖子标记为答案。:(美好的一天!我知道C#允许使用yield的多个迭代器,如下所述:IsMultipleIteratorsispossibleinc#?在PHP中有Iterator接口(interface)。是否可以为一个类实现多个迭代场景?更多细节(编辑):例如,我有一个实现单个树节点的类TreeNode。整棵树可以只用一个这个类来表示。我想提供迭代器来迭代当前节点的所有直接和间接子节点,例如使用BreadthFirst或DepthFirst顺序。我可以将此Iterators实现为单独的类,但这样做我需要树节点将其子