Ben bir dizin açın ve içindeki tüm dosyaları okumak ve şimdiye kadar var, bir array içine onları koymak istiyorum:
$imagesdir = $CFG->dataroot.'/1/themeimages/';
Hangi bana dizin yolunu, nedir sonraki adım verir?
Lütfen etiket listeden ben Moodleın kullandığınız varsayalım beri, sadece kullanabilirsiniz:
function get_directory_list($rootdir, $excludefiles='', $descend=true, $getdirs=false, $getfiles=true)
Bu fonksiyon içerdiği moodlelib.php.
Doc okuma:
- Returns an array with all the filenames in * all subdirectories, relative to the given rootdir.
İsteğe bağlı parametreler hakkında daha fazla bilgi için resmi dokümana bakınız.
Dosyaların içeriğini okumak için Fonksiyonları filelib.php de mevcuttur.
Çözeltisi kullanmak olacaktır opendir + readdir + closedir (quoting an example from the first page),
$imagesdir = $CFG->dataroot.'/1/themeimages/';
if ($handle = opendir($imagesdir)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
echo "$file\n";
}
}
closedir($handle);
}
Another solution would be to use the [DirectoryIterator class ; quoting the example from]4 the __construct page :
$imagesdir = $CFG->dataroot.'/1/themeimages/';
$dir = new DirectoryIterator($imagesdir);
foreach ($dir as $fileinfo) {
if (!$fileinfo->isDot()) {
var_dump($fileinfo->getFilename());
}
}
Of course, in each case, instead of just echoing or dumping the name of the file, you'd have to put it into an array.
Bu döngü önce dizi başlatılıyor anlamına gelecektir:
$list_files = array();
Ve döngü içinde, seçtiğiniz çözümü bağlı olarak, bu iki çizgi biri gibi bir şey kullanabilirsiniz:
$list_files[] = $file;
$list_files[] = $fileinfo->getFilename();
Sadece kullanımı işlevi yerleşik scandir:
Dizinden dosyaları ve dizinleri bir dizi döndürür.
Yani bu gibi kullanabilirsiniz:
$array = scandir($imagesdir);
Tabii ki çok DirectoryIterator kullanabilirsiniz, ama bu çok daha basit olduğunu.
Ayrıca nokta dosyaları şerit olabilir:
$array = array_diff(scandir($imagesdir), array('.', '..'));
daha sonra da bir filtre ihtiyacınız varsa burada kısa çözüm:
$imagesdir = $CFG->dataroot.'/1/themeimages/*.*';
foreach (glob($imagesdir) as $file)
array_push($files,$file);
php otomatik hariç . ve ..
you can also specify your own mask if you don't need ALL files, as shown in above *.*
php also automatically creates the $files array for you.
son satırı da olabilir:
$files[]=$file;