Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Ordine decrescente in lista file

    Buon giorno a tutti genti!

    da un bel po di tempo uso questo script per stampare a video l'elenco dei file presenti in una cartella

    a me serirebbe ordinare al contrario la lista di questi file in ordine decrescente in pratica, ecco lo script

    Codice PHP:
            <?php
        
        $dir 
    "cartella/";

         
        
    $before '';
         
        
    $after '';
         
         
        if (
    is_dir($dir)) {
         
        if (
    $dh opendir($dir)) {
         
        while ((
    $file readdir($dh)) !== false) {
            
            
         
        if(
    is_file($dir $file)){
         
        echo 
    $before.'[*][url="'.$dir.$file.'"]'.$file.'[/url]'.$after"\n";
         
        }
         
        }
         
        
    closedir($dh);
         
        }
         
        }
         
    ?>
    sapreste aiutarmi? grazie mille!

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Ma decrescente secondo il loro peso? es.

    Codice PHP:
    $dir='cartella/';

    $files glob($dir.'*.*');
    $sizes = array();

    foreach(
    $files as $file$sizes[basename($file)] = filesize($file);
    arsort($sizes);
    foreach(
    $sizes as $file => $size)
        echo 
    "$file - $size bytes 
    "


  3. #3
    hai perfettamente ragione, mi servono ordinati in ordine descrescente per nome, sono tutti in formato

    1 - file1.txt
    2 - file2.txt
    3 - file3.txt

    quindi dovrebbero essere ordinati dal 3 all'1 ho provato a fare un po di prova ma non risiesco a farlo funzionare, ma credo di sbagliare qualcosa nella teoria alla base delo script, dunque

    Codice PHP:
    $dir='cartella/'
    ok nulla da dire

    Codice PHP:
    $files glob($dir.'*.*'); 
    legge il contenuto della cartella con qualunque nome file e estensione


    Codice PHP:

    foreach($files as $file$sizes[basename($file)] = filesize($file);
    arsort($sizes);
    foreach(
    $sizes as $file => $size)
        echo 
    "$file - $size bytes 
    "

    ecco da qui mi perdo e non riesco a capire la sintassi, ho provato a fare una cosa del genere ma non funziona


    Codice PHP:
    $dir='cartella/';

    $files glob($dir.'*.*');
    $sizes = array();

    foreach(
    $files as $file$sizes[basename($file)];
    arsort($sizes);
    foreach(
    $sizes as $file => $size)
        echo 
    "$file
    "

    grazie mille per l'aiuto

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da mtk-kun
    hai perfettamente ragione, mi servono ordinati in ordine descrescente per nome, sono tutti in formato

    1 - file1.txt
    2 - file2.txt
    3 - file3.txt

    quindi dovrebbero essere ordinati dal 3 all'1 ho provato a fare un po di prova ma non risiesco a farlo funzionare, ma credo di sbagliare qualcosa nella teoria alla base delo script, dunque

    Codice PHP:
    $dir='cartella/'
    ok nulla da dire

    Codice PHP:
    $files glob($dir.'*.*'); 
    legge il contenuto della cartella con qualunque nome file e estensione


    Codice PHP:

    foreach($files as $file$sizes[basename($file)] = filesize($file);
    arsort($sizes);
    foreach(
    $sizes as $file => $size)
        echo 
    "$file - $size bytes 
    "

    ecco da qui mi perdo e non riesco a capire la sintassi, ho provato a fare una cosa del genere ma non funziona


    Codice PHP:
    $dir='cartella/';

    $files glob($dir.'*.*');
    $sizes = array();

    foreach(
    $files as $file$sizes[basename($file)];
    arsort($sizes);
    foreach(
    $sizes as $file => $size)
        echo 
    "$file
    "

    grazie mille per l'aiuto
    Se volevi farlo per nome eccoti un esempio

    Codice PHP:
    $dir='cartella/'

    $files glob($dir.'*.*'); 
    $sizes = array(); 

    foreach(
    $files as $file$files2[] = $file
    arsort($sizes); 
    foreach(
    $files2 as $file
        echo 
    "$file
    "


  5. #5
    il tuo esempio funziona alla perfezione, c'è solo un piccolo errore
    Codice PHP:
    $dir='cartella/'

    $files glob($dir.'*.*'); 


    foreach(
    $files as $file$files2[] = $file
    arsort($files2); 
    foreach(
    $files2 as $file
        echo 
    "$file
    "

    così worka alla grande, il mio problema successivo è che con la funzione glob rimane visibile, quindi ho risolto come segue

    Codice PHP:
    $dir='cartella/';
    $files scandir($dir); 
    unset(
    $files[0]);
    unset(
    $files[1]);
    foreach(
    $files as $file$files2[] = $file
    arsort($files2); 

    foreach(
    $files2 as $file
        

    echo 
    '$file'
    note a margine, con la funzione scandir vengono elencati anche due voci extra "." e "..", quindi li tolgo dall'array con la funzione unset e tutto funziona alla stragrande proprio come lo volevo io,

    ti ringrazio moltissimo per l'aiuto, ora ho risolto!

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da mtk-kun
    il tuo esempio funziona alla perfezione, c'è solo un piccolo errore
    Codice PHP:
    $dir='cartella/'

    $files glob($dir.'*.*'); 


    foreach(
    $files as $file$files2[] = $file
    arsort($files2); 
    foreach(
    $files2 as $file
        echo 
    "$file
    "

    così worka alla grande, il mio problema successivo è che con la funzione glob rimane visibile, quindi ho risolto come segue

    Codice PHP:
    $dir='cartella/';
    $files scandir($dir); 
    unset(
    $files[0]);
    unset(
    $files[1]);
    foreach(
    $files as $file$files2[] = $file
    arsort($files2); 

    foreach(
    $files2 as $file
        

    echo 
    '$file'
    note a margine, con la funzione scandir vengono elencati anche due voci extra "." e "..", quindi li tolgo dall'array con la funzione unset e tutto funziona alla stragrande proprio come lo volevo io,

    ti ringrazio moltissimo per l'aiuto, ora ho risolto!
    Piu che errore direi dimenticanza, cos'è che rimaneva visibile con glob? , comunque di nulla

  7. #7
    con glob se nella cartella "dir" ci sono 2 file file1.txt e file2.txt la funzione restituisce nell'echo

    dir/file.txt
    dir/file2.txt

    mentre con scandir restituisce solo il nome del file.

    grazie ancora!

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da mtk-kun
    con glob se nella cartella "dir" ci sono 2 file file1.txt e file2.txt la funzione restituisce nell'echo

    dir/file.txt
    dir/file2.txt

    mentre con scandir restituisce solo il nome del file.

    grazie ancora!
    Basterebbe un replace per risolverlo, comunque usa quello che ti torna comodo, ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.