我刚刚从 PHP 7.1 文档中听说了 Iterables。但是没有得到它的实际用例,而且这个概念对我来说也不是很清楚。那么任何人都可以用一些简单的例子来解释它以更快地抓住它吗?
我想知道我们为什么以及在哪里使用它?可迭代有什么好处?
这可能有助于wiki.php.net/rfc/iterable
拥有的主要优点iterable
是可以声明类、方法或函数参数,iterable
但不关心实现,即数组、迭代器、生成器等。所以iterable
可以使用任何东西。
我是 PHP 的初学者,在过去的 5 个小时里我一直在研究这个主题。据我了解,aniterator
允许我们读取大量发生 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",));
希望这可以帮助 ;)