Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    ordinare un array in base ad un altro array

    Ciao ho un array con numeri decimali vorrei ordinarlo numericamente in maniera crescente uso questo codice

    Codice PHP:
    //stringa contenete  i numeri separati da virgola   ( e con un punto per i decimali )che devo ordinare
    $dist $_POST['dist'];
    $distarr2 explode(","$dist); 
       
       foreach(
    $distarr2 as $d) {
                
    $dd[]=floatval($d);
                
    $cc[]=floatval($d);
        }

    natsort($dd);
    $tarray array_values($dd);

    $ddd implode(","$tarray);
    echo 
    $ddd;
    //echo $dist; 
    ma non funziona perchè se stampo i vari array ecco i vari output

    //dist
    //1011929.8698240459,1013083.6584687544,1019959.4701 86285,1013788.5067740665,1013771.0809004005,101308 7.1826713554,1010789.8200816757,1011576.1866657531 ,1011472.2603063541,1013800.7154334215
    //ddd
    //1010781.6073142,1011464.0463331,1011567.9829161,10 11921.6361273,1013075.4308976,1013078.9365951,1013 762.8485323,1013780.2628887,1013792.479234,1019951 .2870267
    //$tarray
    //1010780.0219038,1011462.4602769,1011566.4023321,10 11920.0394951,1013073.8375526,1013077.333312,10137 61.2526133,1013778.6607835,1013790.881258,1019949. 7174436

    il problema non è ne l'ordinamento dell'array ma nell'ordinare il primo array in base al nuovo array che faccio con questo codice

    for ($i=0; $i<=count($tarray); $i++){
    for ($ii=0; $ii<=count($cc); $ii++){
    if($tarray[$i]==$cc[$ii]){
    $index[]=$ii;
    }
    }
    }
    come faccio ad ottenere le chiavi dell'array ordinato e quindi poi cambiare l'ordine dei record nella pagina qui


    Codice PHP:
        if($_GET['ordinedistanzeses']){
                        
    $ordine2 =$_GET['ordinedistanzeses'];
                        
    $ordine explode(","$ordine2);
                    }

                    
                    
                        for (
    $ii 0$ii $count$ii++) {
                    
                        if(
    $_GET['ordinedistanzeses']){
                        
                            
    $e=$ii;
                            
    $i =$ordine[$e];
                        }else{
                            
    $i =$ii;
                        }
                        
                        
    //echo "$i=".$i;
                        
    $subject $this->subjectTable;
                        
    /* @var $subject TableSubject */
                        
    $subject->bind($this->items[$i]);
                        
    $subject->children $this->items[$i]->children
    vi ringrazio se mi autate!!

  2. #2
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Scusami, ma non capisco esattamente cosa vuoi ottenere. Perché non puoi usare sort() oppure asort()? Sono tutti qui http://www.php.net/manual/en/array.sorting.php

    Perché lo trasformi prima in una float? Non è necessario.

    Questo funziona mi pare
    Codice PHP:
    $arr=array("4.5","7.8","3.1");
    sort($arr);
    var_dump($arr); 

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  3. #3
    ciao io ho questi 2 array

    dist
    1011925.8089199637,1013079.6027940696,1019955.4523 507726,1013784.4371663732,
    1013767.021130798,1013083.1111910873,1010785.77703 45415,1011572.1513035492,
    1011468.2162312452,1013796.6523920698 &
    ddd
    1010785.7770345415,1011468.2162312452,1011572.1513 035492,1011925.8089199637,
    1013079.6027940696,1013083.1111910873,1013767.0211 30798,1013784.4371663732,
    1013796.6523920698,1019955.4523507726

    ciaoè sono gli stessi numeri con diverso ordinamento

    all'array dist corrisponde un elenco di record del db stampato su una pag php attraverso un ciclo for

    io vorrei prendere questi record e invece di vederli ordinati come dist 1,2,3,4
    li voglio ordinati come ddd ad es 3,5,1,8...quindi mi prendo gli indici di ddd in cui ci sono le voci che devono andare per primo per secondo per terzo e i record del for invece di andare da 0 a .lenght sono ad es 3,5,1,8..

    solo che facendo cosi

    Codice PHP:
    for ($i=0$i<=count($tarray); $i++){
               for (
    $ii=0$ii<=count($cc); $ii++){
                   if(
    $tarray[$i]==$cc[$ii]){
                       
    $index[]=$ii;
                   }
               }
       } 
    e poi cosi

    Codice PHP:
        if($_GET['ordinedistanzeses']){
                        
    $ordine2 =$_GET['ordinedistanzeses'];
                        
    $ordine explode(","$ordine2);
                    }

                    
                    
                        for (
    $ii 0$ii $count$ii++) {
                    
                        if(
    $_GET['ordinedistanzeses']){
                        
                            
    $e=$ii;
                            
    $i =$ordine[$e];
                        }else{
                            
    $i =$ii;
                        }
                        
                        
    //echo "$i=".$i;
                        
    $subject $this->subjectTable;
                        
    /* @var $subject TableSubject */
                        
    $subject->bind($this->items[$i]);
                        
    $subject->children $this->items[$i]->children
    non sono ordinati in modo crescente sono tutti sballati,
    come faccio ad ordinare correttamente un array in base ad un altro array???
    mi aiutate???? vi ringrazio tanto se mi fate capire dove che sbaglio come posso risolvere

  4. #4
    l'ordinamento dell'array funziona con natsort il problema è ordinare un array in base ad un altro array mi aiutate??

  5. #5
    mi aiutate a capire perchè non funziona l'ordinamento lo fa giusto ma poi ordinare il ciclo for in base a questo ordinamento non mi riesce mi aiutate??

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.