我正在开发一个基于zend框架的电子邮件项目,我正在关注一些代码示例。我无法理解这行代码,它显然是通过电子邮件的不同“部分”循环的。我不知道它是如何工作顺便怀疑发生了一些错误发生,我的解析器没有显示正确。这段代码做了什么?在PHP中的递归迭代器?
foreach (new RecursiveIteratorIterator($mail->getMessage($i)) as $ii=>$part)
上面的foreach循环是什么意思?
我正在开发一个基于zend框架的电子邮件项目,我正在关注一些代码示例。我无法理解这行代码,它显然是通过电子邮件的不同“部分”循环的。我不知道它是如何工作顺便怀疑发生了一些错误发生,我的解析器没有显示正确。这段代码做了什么?在PHP中的递归迭代器?
foreach (new RecursiveIteratorIterator($mail->getMessage($i)) as $ii=>$part)
上面的foreach循环是什么意思?
它创建一个新的递归迭代器,它基于消息的内容(id为$ i)并遍历电子邮件的各个部分。电子邮件通常由多部分消息组成,因此getmessage方法可能会调用检索标头后检索消息的第一部分。获取零件的方法可能会调用自身(递归),并使用递增的id返回零件,因此$ ii => $零件。
如果不知道方法调用的全部内容,就很难展开。
示例目录递归
$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包含的所有元素,使树结构更平坦,使其更像列表。
递归迭代器用于遍历树 - (或更准确地说可以包含迭代器的迭代器)。 The RecursiveIteratorIterator class文档没有特别好的解释 - 但是通读例子。
仅供参考:http://php.net/RecursiveIteratorIterator – outis 2010-05-02 11:42:40