Visualizzazione dei risultati da 1 a 8 su 8

Discussione: sort...

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    70

    sort...

    ho un array composta da vari numeri creati, ognuno, con l'implode di singoli numeri separati.
    Se faccio il sort dell'array il risultato è il seguente:

    codice:
    Array
    (
        [0] => 1
    
        [1] => 13
    
        [2] => 2
    
        [3] => 22
    )
    Mente dovrebbe essere:

    codice:
    Array
    (
        [0] => 1
    
        [1] => 2
    
        [2] => 13
    
        [3] => 22
    )
    Qualcuno sa indicarmi dove sbaglio??

    Grazie

  2. #2
    Come fai ad ordinare l'array?

    Hai provato con sort(...) o asort(...)?

    Guarda sort
    e asort

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    70
    Sì ho usato sort

    Questo si trova dentro un ciclo:

    codice:
    $costo = implode ("",$costo);
    $costo_nodo[$n] = $costo;
    questo dopo il ciclo:

    codice:
    sort($costo_nodo);
    print_r ($costo_nodo);

  4. #4
    Dovrei vedere qualcosa di più del tuo codice perchè sort funziona senza problemi.
    D'altra parte se provi a fare:

    Codice PHP:
    $valori = array(1511129);
    sort($valori);
    print_r($valori); 
    Ti renderai conto va a meraviglia. Quindi il problema sta a monte, non nella funzione di ordinamento

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    70
    il codice nel ciclo è semplicemente:

    prendi il primo numero che trovi nel file e mettilo nella prima cella dell'array
    prendi il secondo numero che trovi nel file e mettilo nella seconda cella dell'array
    ...
    prendi l'n numero che trovi nel file e mettilo nella n cella dell'array

    quindi ho un array con ("1","4","5")
    dopo l'implode diventa il numero 145

    tutti i numeri dell'array "costo" vengono creati così e poi messi nell'array "costo_nodo" il quale deve essere quello ordinato.

    Il sort funziona lo so ma qui sembra ordinarmeli dalla prima posizione, cioè: prima mi mette tutti quelli ke iniziano con uno, poi quelli che iniziano con il 2,...senza tener conto dei valori successivi al primo numero.

    Non so se mi son spiegato.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Perchè per lui sono STRINGHE e la stringa "123" è "più piccola" della stringa "2" (ordinamento alfabetico)
    Per cui devi fare un "casting" quando valorizzi l'array

    Esempio superbanale
    Codice PHP:
    foreach ($mioarray as $key=>$value)
      
    $mioarray[$key] = (int)$value
    In generale devi fare il casting con (int) o (float) o altro tipo numerico

  7. #7
    Eh già, ha ragione Leilond

    ho un array con ("1","4","5")
    le stringhe vengono ordinate diversamente dai numeri

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    70
    Grandissimi!!

    Siete mitici...mi era venuto il dubbio che lo vedesse come stringa ma nn sapevo come fare il casting...

    Grazie ancora!

    Come farei senza di voi!

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.