Ho una cartella. Voglio mettere ogni file in questa cartella in un array e poi voglio echeggiare tutti in un ciclo foreach.
Qual è il modo migliore per farlo?
Grazie!Elenco contenuto della directory (php)
risposta
scandir è quello che stai cercando per http://php.net/manual/en/function.scandir.php
<?php
$dir = '/tmp';
$files1 = scandir($dir);
print_r($files1);
?>
Oppure utilizzare combinazione di opendir e readdir http://php.net/manual/en/function.readdir.php
non ottiene molto più facile di questo
http://ca3.php.net/manual/en/function.scandir.php
Non dimenticate di filtrare le directory nascosti e genitori (che iniziano con un punto) su linux.
Edit: risposta dwich è meglio. Lascerò questo solo per informazione.
<?php
if ($handle = opendir('/path/to/dir')) {
echo "Directory handle: $handle\n";
echo "Files:\n";
while (false !== ($file = readdir($handle))) {
echo "$file\n";
}
closedir($handle);
}
?>
Spero che questo aiuti.
-Alberto
un'alternativa:
define('PATH', 'files/');
$filesArray = array();
$filesArray = glob(PATH . '*', GLOB_ONLYDIR);
Questo metodo consente di specificare/filtro di una per tipo di file. AD ESEMPIO,
define('PATH', 'files/');
define('FILE_TYPE', '.jpg');
$filesArray = array();
$filesArray = glob(PATH . '*' . FILE_TYPE, GLOB_ONLYDIR);
è anche possibile ottenere il nome del percorso completo del file rimuovendo il parametro 'GLOB_ONLYDIR'
Questo funziona per i file e le cartelle nelle sottocartelle troppo. Restituisce l'elenco delle cartelle e l'elenco dei file con il loro percorso.
$dir = __DIR__; //work only for this current dir
function listFolderContent($dir,$path=''){
$r = array();
$list = scandir($dir);
foreach ($list as $item) {
if($item!='.' && $item!='..'){
if(is_file($path.$item)){
$r['files'][] = $path.$item;
}elseif(is_dir($path.$item)){
$r['folders'][] = $path.$item;
$sub = listFolderContent($path.$item,$path.$item.'/');
if(isset($sub['files']) && count($sub['files'])>0)
$r['files'] = isset ($r['files'])?array_merge ($r['files'], $sub['files']):$sub['files'];
if(isset($sub['folders']) && count($sub['folders'])>0)
$r['folders'] = array_merge ($r['folders'], $sub['folders']);
}
}
}
return $r;
}
$list = listFolderContent($dir);
var_dump($list['files']);
var_dump($list['folders']);
- 1. Contenuto della directory in Haskell
- 2. Stran comportamento irb, elenco contenuto directory corrente
- 3. Copiare intero contenuto di una directory ad un'altra usando php
- 4. PHP Ottieni il nome della directory corrente
- 5. PHP + Wordpress - ottenere un elenco di file da una directory
- 6. Ottieni il contenuto della directory in ordine modificato data
- 7. Come posso copiare ricorsivamente il contenuto della directory usando Perl?
- 8. Visualizza il contenuto della mia directory di documenti
- 9. elenco di directory parziale
- 10. Elenco directory Sharpssh
- 11. Disabilita elenco directory in IIS
- 12. Come rimuovere il contenuto nella directory Cache?
- 13. Array ricorsivo profondo della struttura di directory in PHP
- 14. PHP: Ottieni l'ultimo nome della directory dal percorso
- 15. php getcwd() risoluzione target di symlink invece della directory corrente
- 16. Come creare directory virtuali in PHP?
- 17. Elenco timezone PHP migliore
- 18. Directory diff con contenuto in Netbeans
- 19. Trova il contenuto di una directory
- 20. Carica l'intera directory tramite PHP FTP
- 21. Impedire PHP di accedere alla directory padre
- 22. Elenco contenuto di più file jar
- 23. PHP Aggiorna contenuto tabella utilizzando ajax
- 24. PHP Get percorso unica directory
- 25. Elenco ricorsivo contenuto bucket s3 con AWS CLI
- 26. Elenco di directory nel sito Web statico S3
- 27. Aggiorna contenuto php su <select>
- 28. errore vsftpd le directory di elenco
- 29. Elenco di directory bash inatteso con *
- 30. Elenco struttura ad albero delle directory in python?
Penso che sia meglio di 'readdir', anche se è solo PHP 5. +1 a titolo di esempio. – Donovan