Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个代码是做什么的?php中的递归迭代器?_Php_Recursion - Fatal编程技术网

这个代码是做什么的?php中的递归迭代器?

这个代码是做什么的?php中的递归迭代器?,php,recursion,Php,Recursion,我正在从事一个基于zend framework的电子邮件项目,并在线跟踪一些代码示例。。我无法理解这行代码,它显然在电子邮件的不同“部分”之间循环。顺便说一句,我不知道它是如何工作的,我怀疑发生了一些错误,我的解析器没有正确显示 foreach (new RecursiveIteratorIterator($mail->getMessage($i)) as $ii=>$part) 上面的foreach循环是什么意思?它基于id为$i的消息内容创建一个新的递归迭代器,并循环遍历电子邮

我正在从事一个基于zend framework的电子邮件项目,并在线跟踪一些代码示例。。我无法理解这行代码,它显然在电子邮件的不同“部分”之间循环。顺便说一句,我不知道它是如何工作的,我怀疑发生了一些错误,我的解析器没有正确显示

foreach (new RecursiveIteratorIterator($mail->getMessage($i)) as $ii=>$part)

上面的foreach循环是什么意思?

它基于id为$i的消息内容创建一个新的递归迭代器,并循环遍历电子邮件的各个部分。电子邮件通常由多部分消息组成,因此getmessage方法可能会在检索头之后调用以检索消息的第一部分。获取部件的方法可能使用递增的id(递归地)调用自身以返回部件,因此$ii=>$part

如果不知道方法调用的全部内容,则很难进行扩展

目录递归示例

$dir = new RecursiveDirectoryIterator(".");
foreach(new RecursiveIteratorIterator($dir) as $file) {
  // find .txt files
  if (preg_match('/.txt$/i', $file->getFilename())) {
  }
}
编辑2:使用链接站点上的示例:

$foundPart = null;
foreach (new RecursiveIteratorIterator($mail->getMessage(1)) as $part) {
        if (strtok($part->contentType, ';') == 'text/plain') {
            $foundPart = $part;
            break;
        }
}

这将检索所有部分并查找纯文本部分。它是一种递归循环的方式,允许对其进行操作。

它根据id为$i的消息内容创建一个新的递归迭代器,并循环遍历电子邮件的各个部分。电子邮件通常由多部分消息组成,因此getmessage方法可能会在检索头之后调用以检索消息的第一部分。获取部件的方法可能使用递增的id(递归地)调用自身以返回部件,因此$ii=>$part

如果不知道方法调用的全部内容,则很难进行扩展

目录递归示例

$dir = new RecursiveDirectoryIterator(".");
foreach(new RecursiveIteratorIterator($dir) as $file) {
  // find .txt files
  if (preg_match('/.txt$/i', $file->getFilename())) {
  }
}
编辑2:使用链接站点上的示例:

$foundPart = null;
foreach (new RecursiveIteratorIterator($mail->getMessage(1)) as $part) {
        if (strtok($part->contentType, ';') == 'text/plain') {
            $foundPart = $part;
            break;
        }
}

这将检索所有部分并查找纯文本部分。这是一种递归循环的方式,允许对其进行操作。

简单来说,该语句将遍历mail->getMessage包含的所有元素,并将树结构展平,使其更像一个列表


递归迭代器用于遍历树(或者更准确地说,是可以包含迭代器的迭代器)。文档并没有很好地解释它,但请通读示例。

简单来说,该语句将遍历mail->getMessage包含的所有元素,并将树结构展平,使其更像一个列表


递归迭代器用于遍历树(或者更准确地说,是可以包含迭代器的迭代器)。文档并没有很好地解释它,但请通读示例。

实际上,我不知道递归迭代器是什么,这是我需要知道的,如果我要复制这个for语句。。。怎么可能呢。。。只是为了理解conceptgetMessage实际上返回消息编号$i-它是Zend_Mail_消息类的一个对象。。。我不明白的是递归迭代器在这里做什么?它循环(迭代)在调用自身的部分上(递归地)。我以前使用过的上下文用于目录循环。将为答案添加一个示例。我使用的代码在这里-只需对recursive运行ctrl F搜索我相信在检索它们之前,您需要知道有多少个部分,因为getPart方法需要整数输入。实际上,我不知道递归迭代器是什么,这是我需要知道的,如果我是要复制此for语句。。。怎么可能呢。。。只是为了理解conceptgetMessage实际上返回消息编号$i-它是Zend_Mail_消息类的一个对象。。。我不明白的是递归迭代器在这里做什么?它循环(迭代)在调用自身的部分上(递归地)。我以前使用过的上下文用于目录循环。将为答案添加一个示例。我使用的代码如下-只需对Recursive运行ctrl F搜索我相信您需要知道有多少部分,然后才能检索它们,因为getPart方法需要整数输入。参考:参考: