• User

    natural sorting senza mantenimento di chiave

    Ciao a tutti, prima di tutto mi scuso se questo problema è già stato risolto, ma non ho trovato nulla a riguardo sul forum, e anche google non è stato di grande aiuto 😞

    Sto usando in uno script la funzione natsort(), e questo è il risultato:
    [php]
    $a = array(10,3,4,5,8,1,9);
    natsort($a);

    //echo "<pre>", var_dump($a), "</pre>";
    array(7) {
    [5]=>
    int(1)
    [1]=>
    int(3)
    [2]=>
    int(4)
    [3]=>
    int(5)
    [4]=>
    int(8)
    [6]=>
    int(9)
    [0]=>
    int(10)
    }
    [/php]Il risultato è l'array ordinato, ma gli indici sono stati mantenuti!!
    se possibile vorrei che gli indici fossero rinumerati, arrivando a questo risultato:
    [php]
    array(7) {
    [0]=>
    int(1)
    [1]=>
    int(3)
    [2]=>
    int(4)
    [3]=>
    int(5)
    [4]=>
    int(8)
    [5]=>
    int(9)
    [6]=>
    int(10)
    }[/php]Sapete come posso fare??

    grazie


  • User

    Ciao Endorama se devi ordinare un array allora devi fare cosi:

    [PHP]
    for($i=0;$i<count($a)-1;$i++)
    {
    for($j=$i+1;$j<count($a);$j++)
    {
    if($a*>$a[$j])//cosi ordini in maniera cresciente
    {
    $var_temp=$a*;
    $a*=$a[$j];
    $a[$j]=$var_temp;
    }
    }
    }
    [/PHP]

    Se devi fare in maniera decresciente cambi la condizione del if(), se non ho capito male era quel che volevi.


  • User

    Alla fine ho risolto così: semplice, pulito e efficace!!! 😉
    [php]
    $values = array_values($var);
    natsort($values);
    [/php]


  • User

    Ottimo!.