note 120301 added to function.opendir

From: Date: Thu, 08 Dec 2016 12:13:43 +0000
Subject: note 120301 added to function.opendir
Groups: php.notes 
Request: Send a blank email to php-notes+get-208281@lists.php.net to get a copy of this message
Иногда нужно отсортировать список: директории, потом файлы. Не знаю как по потреблению памяти и времени, но вот как я решил данную задачу: 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' ---- Server IP: 72.52.91.14 Probable Submitter: 46.172.66.14 ---- Manual Page -- http://php.net/manual/en/function.opendir.php Edit -- https://master.php.net/note/edit/120301 Del: integrated -- https://master.php.net/note/delete/120301/integrated Del: useless -- https://master.php.net/note/delete/120301/useless Del: bad code -- https://master.php.net/note/delete/120301/bad+code Del: spam -- https://master.php.net/note/delete/120301/spam Del: non-english -- https://master.php.net/note/delete/120301/non-english Del: in docs -- https://master.php.net/note/delete/120301/in+docs Del: other reasons-- https://master.php.net/note/delete/120301 Reject -- https://master.php.net/note/reject/120301 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#208281) next »