Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    428

    sort di valori in array

    ciao,
    sto cercando di ordinare un'array che contiene valori com a/1 a/2 a/3 a/320

    siccome l'array è popolata dinamicamente poi mi posso trovare con valori sparsi.

    Il sort funziona correttamente la prima volta che lo lancio inserendo correttamente i valori nell'ordine corretto.
    la funzione sort la richiamo con il flag SORT_NUMERIC e come dicevo a primo giro funziona correttamente.
    Al secondo giro sia che chiamo la sort, rsort, arsort, etc..etc.. lui mi va ad invertire l'ordine... mettendo così una volta a/1 a/2 a/3 a/320, poi a/320 a/3 a/2 a/1...etc..etc..

    è normale?
    c'è unmodo di fare correttamente tale sort?

    grazie
    ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    cosa vuol dire "secondo giro"? che variabile passi? a me questo:

    Codice PHP:
    $array = array('a/1''a/2''a/3''a/320');
    $returnValue sort($arraySORT_NUMERIC); 
    restituisce:
    Codice PHP:
    array (
      
    => 'a/320',
      
    => 'a/3',
      
    => 'a/2',
      
    => 'a/1',

    (facendo un confronto "numerico" come dici, forse tu lo vorresti come "stringa" invece)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    428
    esatto, come vedi ti ha fatto un reverse dell'array.

    perchè a/320 lui l'ha ritenuto più piccolo di a/3..etc..etc.. perchè sort dovrebbe ordinare dal più piccolo al più grande!

    Quello che voglio dire è che se ho
    Codice PHP:
    $array = array('a/1''a/320''a/3''a/2');
    $returnValue sort($arraySORT_NUMERIC); 
    Lui mi restituisce (e se non ricordo male mantenendo l'associazione chiave)
    codice:
    Array ( [0] => a/1 [3] => a/2 [2] => a/3 [1] => a/320)
    se a questo punto eseguo nuovamente:
    Codice PHP:
    $returnValue sort($arraySORT_NUMERIC); 
    lui mi dovrebbe lasciare invariato l'ordine... ed invece esegue il reverse
    codice:
    Array ( [1] => a/320 [2] => a/3 [3] => a/2 [0] => a/1)
    se eseguo invece il sort_string lui restituisce a/1, a/2, a/320, a/3 è non corretto (o meglio non è l'ordinamento che vorrei ottenere.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    no... l'esempio che ti ho fatto è esattamente come ti ho mostrato (l'ho eseguito... l'errore è nel parametro di riordino, dato che i valori NON sono numerici... usa SORT_STRING al posto di SORT_NUMERIC)

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    428
    ok, capito grazie!

    Però il sort con sort_string non è restituisce quello che mi aspetto.. perchè a/320 per lui ha priorità rispetto a a/3 ...
    quindi una ipotesi di a/3 a/4 a/320 lui riordina con a/3 a/320 a/4 se non erro... ora non ho possibilità di ritestare la funzione però sicuramente il 320 non lo mette in fondo.

    Non ho speranze di fare un sort in questo modo?

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    dovresti "filtrare" i dati, si può

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.