我刚从PHP 7.1文档中听说过Iterables。 但是没有得到它的实际用例,这个概念对我来说都不清楚。 所以任何人都可以用一些简单的例子来解释它,以便更快地抓住它吗?
我想知道我们使用它的原因和位置? 可迭代有什么好处?
答案 0 :(得分:1)
这可能会有助wiki.php.net/rfc/iterable
拥有iterable
的主要优点是可以声明类,方法或函数参数iterable
但不关心实现,即数组,迭代器,生成器等。所以任何东西都是可以使用iterable
。
答案 1 :(得分:1)
我是 PHP 的初学者,在过去的 5 个小时里我一直在研究这个主题。据我了解,iterator
允许我们读取大量发生在 RAM 内存溢出的数据,例如对大型日志文件的分析。
通过使用一种称为本质上懒惰的模式,一次读取一个元素,您可以读取一个 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",));
希望这有帮助;)