Newsgroup: it.comp.www.php
Titolo: due server, due diversi ordinamenti

Ciao a tutti.
Vorrei popolare un array col nome di alcune cartelle, tale nome deve
iniziare con "c_". Fin qui nessun problema, so farlo.
La cosa strana è che, a seconda del server che uso, l'array viene
riempito in maniera "diretta" o "inversa", cioè, rispettando l'ordine
elfabetico (forse è meglio dire alfanumerico, non so) o facendo l'esatto
opposto. Un esempio: ho queste cartelle
c_111
c_112
c_113
c_114
In casa ottengo questo array:
$ar[0] = c_111
$ar[1] = c_112
$ar[2] = c_113
$ar[3] = c_114
sul web quest'altro:
$ar[0] = c_114
$ar[1] = c_113
$ar[2] = c_112
$ar[3] = c_111
Il motivo non riesco proprio a immaginarlo, è probabile si tratti di una
configurazione del server di cui non so niente.
Il codice per la verifica immediata:
$ar=array();
    if ($handleC = opendir($Cart)) {
        while (false !== ($NomeC = readdir($handleC))) { 
           if (substr($NomeC,0,2) == "c_" ) {
           array_push($ar,$NomeC);
echo "nomi: " . $NomeC . "<br />\n"; // per la verifica
           }
        }    
    }
 
Secondo voi c'è modo di ottenere sempre lo stesso ordine, anche
cambiando server, oppure (a seconda del caso) è indispensabile un
array_reverse?
Ovviamente mi farebbe comodo avere l'identico codice in locale e in
remoto, altrimenti rischio di fare confusione.
Grazie a tutti.
-- 
Nicoletta

 una configurazione del server di cui non so niente.
[quoto 
http://www.php.net/readdir
]
The filenames are returned in the order in which they are stored by the
filesystem.
[/quoto]
Per risolvere utilizza 
http://www.php.net/sort
-- 
I am what I am, I do what I can
L'uomo, conscio di sbagliare, persevera.

 Secondo voi c'è modo di ottenere sempre lo stesso ordine?
Non so il motivo di questo comportamento ma puoi comunque fare alla fine un
bel:
    sort($ar);
Se gli elementi erano già ordinati, male non fa.
-- 
Nello Polesello
Per le risposte in mail sono libero, non occupato.

Ciao, nicoletta!
Il giorno 06/07/2004 alle ore 16:26 hai scritto:
 n> Secondo voi c'è modo di ottenere sempre lo stesso ordine, anche
 n> cambiando server, oppure (a seconda del caso) è indispensabile un
 n> array_reverse?
Magari potresti ordinare l'array con sort().
Bye
-- 
Try not. Do, or do not. There is no try.
http://www.maccasoft.com

 Per risolvere utilizza 
http://www.php.net/sort
Sì, prima ho detto erroneamente reverse, ma avevo in mente sort, chiedo
scusa. Però è un peccato, perché se NON ho voce in capitolo sulla
disposizione dei file (per ora è solo un sospetto, mi auguro tu voglia
confermare o sconfermare), il contenuto della cartella dovrò leggerlo
sempre tutto; mentre, se potessi riempire l'array finché non si verifica
la condizione x, potrei uscire dal ciclo e velocizzare la lettura.
while (false !== (...) && condizione x) {
Ti pare?
Voglio dire: l'array, anziché un fantastiliardo di elementi, potrebbe
averne tre, quattro, cinque, quelli che occorrono.
Thanks Astronomy, thanks Polesello, thanks Maccaferri :)
-- 
Nicoletta

 averne tre, quattro, cinque, quelli che occorrono.
Beh, puoi comunque ciclare con readdir o Dir:read ed inserire nel tuo
array solo i valori che ti interessano.


Ciao, nicoletta!
Il giorno 06/07/2004 alle ore 19:03 hai scritto:
 n> Non mi č chiaro "the order in which they are stored by the filesystem"
 n> (non per l'inglese, per il concetto).
Tu sai cos'e' un filesystem o bisogna fare un passo ancora piu' indietro ?
 n> C'č da fare un passo indietro, quello che mi manca č: secondo quale
 n> ordine vengono immagazzinati (memorizzati) i nomi nel filesystem?
Dipende dal filesystem, appunto. NTFS (NT/2000/XP) li memorizza in ordine
alfabetico. FAT (DOS) e FAT32 (Windows 95/98/ME) in ordine quasi casuale (in
realta' nell'ordine in cui vengono creati, ma se si cancella un file poi lo
spazio occupato dal nome viene riutilizzato, quindi alla lunga e' come se
fossero ordinati casualmente). ext2 (Linux) se non sbaglio anch'esso non ha
un ordine prestabilito.
 n> Evidentemente, desumo, da un'impostazione alla quale non posso accedere,
 n> forse nel php.ini. Dico bene o male?
Dici bene (ma non e' sicuramente nel php.ini), a meno che tu non voglia
reinstallare il sistema operativo che utilizza il server secondo i tuoi
gusti.
Un metodo per avere i file sempre ordinati, che si usava ai tempi dei BBS
sotto DOS (bei ricordi) e' quello di spostare tutti i file in una directory
temporanea, cancellare la directory originale, ricrearla e spostare di nuovo
i file nell'ordine che si desidera.
Bye
-- 
Great warrior? Wars not make one great.
http://www.maccasoft.com

 Bye
-- 
mailto: y = i
----------------------------------------
Vivo nel terrore di non essere frainteso 
(Oscar Wilde)

 Io ti rispondo, 
Rispondi un accidente :-)  Oh, non sono io, a me potete trovarmi di
quando in quando su <it.comp.lang.javascript>, qui più difficilmente. E'
quella testa di rapa di Nicoletta che ha voluto creandosi un account sul
mio Mac, finendo per postare col mio :)
Chiedo scusa, salute a tutti.


 Dipende dal filesystem, appunto.
<snip>
Marco, il tuo post è  da incorniciare, mi darà spunto per riflettere.
Grazie infinite :)
p. s. Chiedo scusa per il casino che ho combinato, so che queste cose
possono creare equivoci e malumori. Mi è stato detto "fai pure" e io ho
fatto troppo. Ora spero di aver creato il giusto account e di non aver
premuto il tasto invio troppo frettolosamente.
Nicoletta

 array solo i valori che ti interessano.
Giusto, grazie mille :)
Nicoletta

Ciao, Cujo!
Il giorno 13/07/2004 alle ore 19:38 hai scritto:
 C> Non ci credo neanche se lo vedo.
Peggio per te.
 C> Ovvero, se ho i dati tutti "compattati" all'inizio del disco, poi decido
 C> di salvare un piccolo file di testo chiamato "a.txt" che succede, mi
 C> sposta TUTTO il resto in avanti ???
Infatti si parlava di nomi di file, non del loro contenuto. I nomi dei file
sono memorizzati in una struttura ad albero b-tree. I nomi ritornati dalle
funzioni che leggono il contenuto delle directory sono sempre in ordine
alfabetico.
