我刚从PHP7.1文档中听说了Iterables。但是没有得到它的实际用例,概念对我来说也不是很清楚。那么,有没有人可以用一些简单的例子来解释一下,以便更快地掌握它呢?
我想知道我们为什么使用它,在哪里使用它?iterable的好处是什么?
发布于 2017-05-03 21:35:15
这可能对wiki.php.net/rfc/iterable有帮助
拥有iterable的主要优点是,类、方法或函数参数可以声明为iterable,而不必关心实现,即数组、迭代器、生成器等。因此,任何iterable类型的东西都可以使用。
发布于 2021-03-20 09:25:23
我是PHP的初学者,在过去的5个小时里,我一直在研究这个主题。据我所知,iterator允许我们读取大量发生内存溢出的数据,例如对大型日志文件的分析。
通过使用一次读取一个元素的惰性模式,您可以读取一个4 4GB的文件,而不必将其全部加载到内存中。从理论上讲,您可以处理无限数量的信息。
为此,我们需要定义一些方法:
<?php
class myIterator implements Iterator {
private $position = 0;
private $array = array("A","B","C",);
public function __construct() {
$this->position = 0;
}
function rewind() {
$this->position = 0;
}
function current() {
return $this->array[$this->position];
}
function key() {
return $this->position;
}
function next() {
$this->position++;
}
function valid() {
return isset($this->array[$this->position]);
}
}
$it = new myIterator;
foreach($it as $key => $value) {
var_dump($key, $value);
echo "\n";
}在PHP 7.1中,这可以简化为:
<?php
class myIterable {
function foo(iterable $iterable){
foreach ($iterable as $key => $value) {
var_dump($key, $value);
echo "\n";
}
}
}
$it = new myIterable;
$it->foo(array("A","B","C",));希望这能有所帮助;)
https://stackoverflow.com/questions/43761129
复制相似问题