note 82182 added to function.glob

From: Date: Mon, 31 Mar 2008 01:47:11 +0000
Subject: note 82182 added to function.glob
Groups: php.notes 
Request: Send a blank email to php-notes+get-137776@lists.php.net to get a copy of this message
As a response to a post by viajy at yoyo dot org on 10-Feb-2007 04:50, he posted the following code: <?php function listdirs($dir) { static $alldirs = array(); $dirs = glob($dir . '/*', GLOB_ONLYDIR); if (count($dirs) > 0) { foreach ($dirs as $d) $alldirs[] = $d; } foreach ($dirs as $dir) listdirs($dir); return $alldirs; } ?> It is not best practice to use recursive functions like that, so I wrote a safe (non-recursive) function below: <?php function listdirs_safe($start) { $dir = $start; $dirs = array(); $next = 0; while (true) { $_dirs = glob($dir.'/*', GLOB_ONLYDIR); if (count($_dirs) > 0) { foreach ($_dirs as $key => $_dir) $dirs[] = $_dir; } else break; $dir = $dirs[$next++]; } return $dirs; } ?> Example: print_r(listdirs_safe('*')); Output: Array ( [0] => Dummy folder/Dummy folder 2 [1] => Dummy folder/Dummy folder 2/Dummy Folder 3 [2] => Dummy folder/Dummy folder 2/Dummy Folder 3/4 [3] => Dummy folder/Dummy folder 2/Dummy Folder 3/Dummy folder 4 [4] => Dummy folder/Dummy folder 2/Dummy Folder 3/4/5 ) ---- Server IP: 64.71.164.2 Probable Submitter: 75.15.75.77 ---- Manual Page -- http://www.php.net/manual/en/function.glob.php Edit -- https://master.php.net/note/edit/82182 Del: integrated -- https://master.php.net/note/delete/82182/integrated Del: useless -- https://master.php.net/note/delete/82182/useless Del: bad code -- https://master.php.net/note/delete/82182/bad+code Del: spam -- https://master.php.net/note/delete/82182/spam Del: non-english -- https://master.php.net/note/delete/82182/non-english Del: in docs -- https://master.php.net/note/delete/82182/in+docs Del: other reasons-- https://master.php.net/note/delete/82182 Reject -- https://master.php.net/note/reject/82182 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#137776) next »