首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP中的迭代变量是什么?我们为什么要使用它?

PHP中的迭代变量是什么?我们为什么要使用它?
EN

Stack Overflow用户
提问于 2017-05-03 21:12:37
回答 2查看 2.3K关注 0票数 8

我刚从PHP7.1文档中听说了Iterables。但是没有得到它的实际用例,概念对我来说也不是很清楚。那么,有没有人可以用一些简单的例子来解释一下,以便更快地掌握它呢?

我想知道我们为什么使用它,在哪里使用它?iterable的好处是什么?

EN

回答 2

Stack Overflow用户

发布于 2017-05-03 21:35:15

这可能对wiki.php.net/rfc/iterable有帮助

拥有iterable的主要优点是,类、方法或函数参数可以声明为iterable,而不必关心实现,即数组、迭代器、生成器等。因此,任何iterable类型的东西都可以使用。

票数 3
EN

Stack Overflow用户

发布于 2021-03-20 09:25:23

我是PHP的初学者,在过去的5个小时里,我一直在研究这个主题。据我所知,iterator允许我们读取大量发生内存溢出的数据,例如对大型日志文件的分析。

通过使用一次读取一个元素的惰性模式,您可以读取一个4 4GB的文件,而不必将其全部加载到内存中。从理论上讲,您可以处理无限数量的信息。

为此,我们需要定义一些方法:

代码语言:javascript
复制
<?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中,这可以简化为:

代码语言:javascript
复制
<?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",));

希望这能有所帮助;)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43761129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档