jjzjj

iterator

全部标签

php - 可迭代对象和数组类型提示?

我有很多函数要么具有数组类型提示,要么使用is_array()检查变量的数组性。现在我开始使用可迭代的对象。它们实现了Iterator或IteratorAggregate。如果它们通过类型提示或通过is_array(),它们是否会被接受为数组?如果我必须修改我的代码,是否有一种通用的is_iterable(),或者我必须做类似的事情:if(is_array($var)OR$varinstance_ofIterableOR$varinstanceofIteratorAggregate){...}还有哪些其他可迭代接口(interface)? 最佳答案

类结构中的 PHP 内存泄漏

希望有人能帮我解决这个问题,有点难过。因此对图像和多边形进行了一些处理,但出现了奇怪的内存泄漏。所以我有一个名为canvas的包装器类,它只包含我的图像资源,另一个名为polygon的包装器类用于管理和操作另一个名为vertices的类,它只是x和y协调器数组的容器。非常直接。如果您使用此方法,即使在取消设置变量之后,图像资源的内存也不会返回,但如果您通常使用new关键字创建一个Polygon实例并取消设置它,那就没问题了。canvas类还有另一个称为destroy的方法:imagedestroy($this->canvas);所以使用这个:$img=newImage_Canvas($

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 - 什么是 PHP 中的 Iterables 以及我们为什么使用它?

我刚刚从PHP7.1文档中听说了Iterables。但是没有得到它的实际用例,而且这个概念对我来说也不清楚。那么任何人都可以用一些简单的例子来解释它以更快地获取它吗?我想知道为什么以及在哪里使用它?可迭代的好处是什么? 最佳答案 这可能会有所帮助wiki.php.net/rfc/iterableiterable的主要优点是可以将类、方法或函数参数声明为iterable但不必关心实现,即数组、迭代器、生成器、等等。所以任何可迭代的东西都可以使用。 关于php-什么是PHP中的Iterabl

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