我正在開發一個基於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