Visualizzazione dei risultati da 1 a 5 su 5

Discussione: opendir()

  1. #1

    opendir()

    ho un dubbio esistenziale...

    ho scritto questo codice:

    Codice PHP:
    $scambi=1;
    function 
    xt($fn){ 
    $fn strtolower($fn) ; 
    $exts split("[/\\.]"$fn) ; 
    $n count($exts)-1
    $exts $exts[$n]; 
    return 
    $exts
    }

    $dir="./res/";
    $h=opendir($dir);
    $cnt_d=0;
    while(
    $file=readdir($h)){
        if((
    strtolower(xt($file))==strtolower($file))&&($file!=".")&&($file!="..")){
            
    $dirs[$cnt_d]=$file;            //Aggiungi cartella all'array in posizione $cnt;
            
    $cnt_d++;                    //aumenta il contatore cartelle (prima cartella ha indice 0);
        
    }
    }

    //e già qui l'array dovrebbe essere ordinato per benino
    //ma siccome di fatto non me lo ordina sono passato ad ordinarlo a mano

    $pass_asc=1;
    $pass_desc=1;
    while(
    $scambi==1){
        
    $scambi=0;
        for(
    $i=$pass_desc;$i<$cnt_d-$pass_asc;$i++){
            if(
    intval(substr($dirs[$i-1],0,2))>intval(substr($dirs[$i],0,2))){
    //quest'ultima riga va spiegata: le cartelle lette e poste nell'array
    //hanno nomi NNNAbcAbc dove NNN è un numero scritto in 3 cifre (001, 002, 003)
                
    $temp=$dirs[$i-1];
                
    $dirs[$i-1]=$dirs[$i];
                
    $dirs[$i]=$temp;
                
    $scambi=1;
            }
            
    $pass_asc++;
            
            if(
    $scambi!=0){
                for(
    $i=$cnt_d-$pass_asc;$i>$pass_desc;$i--){
                    
    $temp=$dirs[$i-1];
                    
    $dirs[$i-1]=$dirs[$i];
                    
    $dirs[$i]=$temp;
                    
    $scambi=1;
                }
            }
        }

    qualcuno ha qualche idea per spiegarmi per quale sadica ragione mi ritrovo ancora con un array non ordinato e quello che è ordinato lo è al contrario?

    stampando l'array con:
    Codice PHP:
    for($i=0$i<$cnt_d$i++)
    echo 
    $dirs[$i]."
    "

    mi da una lista di cartelle tipo
    005cartella5
    003cartella3
    002cartella2
    001cartella1
    004cartella4

    sbaglio o non ha senso?

  2. #2
    Che cosa voi ottenere in output?

    Un semplice codice come questo, non è sufficiente?

    Codice PHP:
    <pre>
    <?php
    $files 
    glob('./res/*');
    sort($files);
    print_r($files);
    ?>
    </pre>

  3. #3
    hem... allora premesso k nn sapevo ne dell'esistenza di glob ne dellesistenza di sort xD
    io non devo leggere una lista di files ma l'elenco delle subdirectory di primo livello della cartella res.. la struttura è + o - questa

    ./res
    ./res/001cartella1
    ./res/001cartella1/src.txt (file da cui leggerò il testo)
    ./res/001cartella1/pic.jpg (immagine da linkare)
    ./res/001cartella1/pic_t.jpg (thumbnail da inserire)
    [...]
    ./res/005cartella5
    ./res/005cartella5/src.txt
    ./res/005cartella5/pic.jpg
    ./res/005cartella5/pic_t.jpg

    e io ho bisogno del riferimento ad ogni cartella che inserisco perchè poi leggo in un ciclo for una serie di files

    quindi voglio mettere tutte le cartelle in un array ma l'array deve essere ordinato (per questo ho piazzato i 3 numeri all'inizio.

  4. #4
    Ti suggerisco vivamente di iniziare a studiare il manuale ufficiale prima di continuare a creare pezzi di codice così ampi solo a causa dell'ignoranza di alcune funzioni base del PHP:

    Codice PHP:
    <pre>
    <?php
    $files 
    glob('./res/*'GLOB_ONLYDIR);
    sort($files);
    $files array_map('basename'$files);
    print_r($files);
    ?>
    </pre>

  5. #5
    grazie mille! funziona!
    mi devo studiare un po di fondamenti di php

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.