Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 21

Discussione: ordinare un array

  1. #11
    Originariamente inviato da Shores
    No, comunque non riesce ad ordinare un array di array, nessuna delle funzioni di PHP lo fa.
    Accidenti se lo fa! Non posso utilizzare degli array differenti, devo averne uno multidimensionale da ordinare secondo una chiave univoca ($ordina).

    I miei problemi derivano dal fatto che questa funzione aveva glob invece che readdir, che restituisce gli elementi della cartella in ordine alfabetico, tutto qui.
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

  2. #12
    Originariamente inviato da Mutato
    Accidenti se lo fa! Non posso utilizzare degli array differenti, devo averne uno multidimensionale da ordinare secondo una chiave univoca ($ordina).

    I miei problemi derivano dal fatto che questa funzione aveva glob invece che readdir, che restituisce gli elementi della cartella in ordine alfabetico, tutto qui.
    Il tuo codice NON crea un array multidimensionale.

    Per creare un array multidimensionale avresti dovuto scrivere:

    $MYFILE[$i][0] = $i;
    $MYFILE[$i][1] = $mydata;
    $MYFILE[$i][2] = $mysize;
    $MYFILE[$i][3] = $record;

    Quello che hai fatto tu è un array di array, e non è AFFATTO la stessa cosa.

    Il fatto che readdir ti abbia risolto il problema non significa che con krsort lo avresti risolto, scommettiamo?
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  3. #13
    E comunque, readdir non ti garantisce affatto che siano in ordine alfabetico:

    http://it2.php.net/manual/it/function.readdir.php

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  4. #14
    Originariamente inviato da Shores
    Il fatto che readdir ti abbia risolto il problema non significa che con krsort lo avresti risolto, scommettiamo?
    No, guarda che e' il contrario. Io usavo glob per listare i file, e glob li restituisce in ordine alfabetico, quindi

    $MYFILE[$i] = array(...);

    mi dava come ordine 1,2,3,4,5 e questi corrispondevano ai file ordinati alfabeticamente

    1 aaa
    2 bbb
    3 ccc
    ...

    quindi con rsort 3,2,1

    quando ho inseriro readdir, ovviamente il gioco non funzionava piu' perche' come hai spiegato tu restituiva una cosa tipo

    1 aaa
    2 ccc
    3 bbb

    allora al posto di $i ho usato come chiave una parte del nome del file e con krsort ho ottenuto i file in ordine alfabetico inverso
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

  5. #15
    Gli array multidimensionali e gli array di array sono la stessa cosa:

    codice:
    <?php
    $array1[0][0] = 1;
    $array1[0][1] = 2;
    $array1[0][2] = 3;
    $array1[1][0] = 4;
    $array1[1][1] = 5;
    $array1[1][2] = 6;
    $array1[2][0] = 7;
    $array1[2][1] = 8;
    $array1[2][2] = 9;
    
    $array2 = array(array(1,2,3), array(4,5,6), array(7,8,9));
    
    print_r($array1);
    print_r($array2);
    ?>

  6. #16
    Ok, ma allora non hai SOLO aggiunto una krsort: hai cambiato ciò che usi come chiave di $MYFILE, non usi più un intero ma invece usi la chiave per cui vuoi ordinare.

    Bene, ma scommettiamo che se ora tu li volessi ordinare per data, non ci riusciresti, a meno di non cambiare di nuovo la chiave che usi per ogni elemento di $MYFILE?

    Insomma, quello che volevo dire è che non c'è nessuna funzione php che ti ordini un array di array in cui il valore su cui ordinare è contenuto in un ELEMENTO dell'array che è contenuto in ogni elemento dell'array principale.

    Se invece tu avessi usato la sintassi multidimensionale, allora avresti pututo ordinare l'array per una qualsiasi delle sue "colonne" SENZA dover cambiare nulla se non la chiamata a multisort.
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  7. #17
    Originariamente inviato da Gianni_T
    Gli array multidimensionali e gli array di array sono la stessa cosa:

    codice:
    <?php
    $array1[0][0] = 1;
    $array1[0][1] = 2;
    $array1[0][2] = 3;
    $array1[1][0] = 4;
    $array1[1][1] = 5;
    $array1[1][2] = 6;
    $array1[2][0] = 7;
    $array1[2][1] = 8;
    $array1[2][2] = 9;
    
    $array2 = array(array(1,2,3), array(4,5,6), array(7,8,9));
    
    print_r($array1);
    print_r($array2);
    ?>
    Ok, avete ragione, ho detto una marea di cazzate.

    Però questa cosa mi sembra assolutamente incredibile.

    Dovrò tenerla a mente, perchè mi avete appena evitato notevoli casini futuri, grazie mille ad entrambi e perdonate il rincoglionimento.
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  8. #18
    Originariamente inviato da Shores
    Il tuo codice NON crea un array multidimensionale.

    Per creare un array multidimensionale avresti dovuto scrivere:

    $MYFILE[$i][0] = $i;
    $MYFILE[$i][1] = $mydata;
    $MYFILE[$i][2] = $mysize;
    $MYFILE[$i][3] = $record;

    Quello che hai fatto tu è un array di array, e non è AFFATTO la stessa cosa.

    Il fatto che readdir ti abbia risolto il problema non significa che con krsort lo avresti risolto, scommettiamo?
    La cosa mi interessa molto, ma non capisco $MYFILE e $MD mi restituiscono la stessa cosa!

    Codice PHP:
    <?php
    $i 
    "0";
    $dh opendir(".");
    while(
    false !== ($record readdir($dh))){


            if((
    $record == ".") || ($record == "..")) continue;

            
    $i $i+1;

            
    $mysize filesize($record);
            
    $mysize round(($mysize/1024/1024),0);

            
    $MYFILE[$i] = array($i$mysize$record);

            
    $MD[$i][0]=$i;
            
    $MD[$i][1]=$mysize;
            
    $MD[$i][2]=$record;

    }

    closedir($dh);


    echo 
    "<h3>Array, array</h3>";
    echo 
    "<pre>";
    print_r($MYFILE);
    echo 
    "</pre>";

    echo 
    "<h3>multidimensionale?</h3>";
    echo 
    "<pre>";
    print_r($MD);
    echo 
    "</pre>";
    ?>
    il codice dovrebbe funzionare su qualsiasi dir.
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

  9. #19
    Originariamente inviato da Mutato
    ...
    il codice dovrebbe funzionare su qualsiasi dir.
    Allora non hai ancora letto la mia ultima risposta...
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  10. #20
    Originariamente inviato da Shores
    Allora non hai ancora letto la mia ultima risposta...
    Probabilmente perche` il tuo messaggio e' delle 16.22 e il mio delle 16.23, probabilmente perche' mentre tu postavi il tuo io scrivevo il mio.

    A, se il mio problema fosse stato ordinare l'array secondo + chiavi avrei utilizzato array_multisort
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

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.