note 120301 deleted from function.opendir by cmb

From: Date: Thu, 08 Dec 2016 12:24:51 +0000
Subject: note 120301 deleted from function.opendir by cmb
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-208282@lists.php.net to get a copy of this message
Note Submitter: oleg000_som at mail dot ru ---- Иногда нужно отсортировать список: директории, потом файлы. Не знаю как по потреблению памяти и времени, но вот как я решил данную задачу: function GetDir($get_dir = null){ if ($get_dir !== null and $get_dir!=='/'){ $gd = $get_dir; } else{ $gd = ''; } $d = $_SERVER['DOCUMENT_ROOT'].'/'.$gd; $dh = opendir($d); while (false !== ($filename = readdir($dh))){ if($filename !== '.' and $filename !== '..'){ if (is_dir($d.'/'.$filename.'/')){ $dirs[] = $filename; } else{ $f[] = $filename; } } } closedir($dh); if (!isset($dirs) or count($dirs)==0){ $dirs = array(); } if (isset($f) and count($f)>0){ $dirs = array_merge($dirs, $f); /* sorting: dirs, then files*/ } return $dirs; } PS: когда проверял is_dir($filename) некоторые директории почему-то в массив $f кидало, поэтому is_dir($d.'/'.$filename.'/') - так нормально. Сейчас использую denwer с php 5.3.3. В document_root значение, например, такое 'W:/home/example/www' PS2: $get_dir в моем случае я получаю через $_GET[] и могу прислать себе '/' (возврат к корневой директории сайта), 'директория' или 'директория/директория2'

« previous php.notes (#208282) next »