note 113636 added to language.generators.syntax

From: Date: Fri, 08 Nov 2013 07:46:25 +0000
Subject: note 113636 added to language.generators.syntax
Groups: php.notes 
Request: Send a blank email to php-notes+get-197462@lists.php.net to get a copy of this message
This is little example of using generators with recursion. Used version of php is 5.5.5 [php] <?php define ("DS", DIRECTORY_SEPARATOR); define ("ZERO_DEPTH", 0); define ("DEPTHLESS", -1); define ("OPEN_SUCCESS", True); define ("END_OF_LIST", False); define ("CURRENT_DIR", "."); define ("PARENT_DIR", ".."); function DirTreeTraversal($DirName, $MaxDepth = DEPTHLESS, $CurrDepth = ZERO_DEPTH) { if (($MaxDepth === DEPTHLESS) || ($CurrDepth < $MaxDepth)) { $DirHandle = opendir($DirName); if ($DirHandle !== OPEN_SUCCESS) { try{ while (($FileName = readdir($DirHandle)) !== END_OF_LIST) { //read all file in directory if (($FileName != CURRENT_DIR) && ($FileName != PARENT_DIR)) { $FullName = $DirName.$FileName; yield $FullName; if(is_dir($FullName)) { //include sub files and directories $SubTrav = DirTreeTraversal($FullName.DS, $MaxDepth, ($CurrDepth + 1)); foreach($SubTrav as $SubItem) yield $SubItem; } } } } finally { closedir($DirHandle); } } } } $PathTrav = DirTreeTraversal("C:".DS, 2); print "<pre>"; foreach($PathTrav as $FileName) printf("%s\n", $FileName); print "</pre>"; [/php] ---- Server IP: 192.41.45.150 Probable Submitter: 91.211.149.29 ---- Manual Page -- http://php.net/manual/en/language.generators.syntax.php Edit -- https://master.php.net/note/edit/113636 Del: integrated -- https://master.php.net/note/delete/113636/integrated Del: useless -- https://master.php.net/note/delete/113636/useless Del: bad code -- https://master.php.net/note/delete/113636/bad+code Del: spam -- https://master.php.net/note/delete/113636/spam Del: non-english -- https://master.php.net/note/delete/113636/non-english Del: in docs -- https://master.php.net/note/delete/113636/in+docs Del: other reasons-- https://master.php.net/note/delete/113636 Reject -- https://master.php.net/note/reject/113636 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#197462) next »