Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Ordinare array multidimensionale ??

    L'array è composto in questo modo:
    Codice PHP:
    $visual_time[$i]['id'] = etc;
    $visual_time[$i]['id_app'] = etc;
    $visual_time[$i]['start'] = etc;
    $visual_time[$i]['end'] = etc;
    $visual_time[$i]['color'] = etc;
    $visual_time[$i]['status'] = etc

    l'Array non ordinato:

    codice:
    Array
    (
        [0] => Array
            (
                [start] => 0
                [end] => 4
                [color] => #9F0
                [status] => Disponibile
                [id] => 1
                [id_app] => 0
            )
    
        [1] => Array
            (
                [start] => 8
                [end] => 12
                [color] => #F90
                [status] => Appuntamento
                [id] => 2
                [id_app] => 2
            )
    
        [2] => Array
            (
                [start] => 4
                [end] => 8
                [color] => #F00
                [status] => Non Disponibile
            )
    
        [3] => Array
            (
                [start] => 16
                [end] => 20
                [color] => #9F0
                [status] => Disponibile
                [id] => 3
                [id_app] => 0
            )
    
        [4] => Array
            (
                [start] => 12
                [end] => 16
                [color] => #F00
                [status] => Non Disponibile
            )
    
        [5] => Array
            (
                [start] => 20
                [end] => 24
                [color] => #9F0
                [status] => Disponibile
                [id] => 4
                [id_app] => 0
            )
    
    )

    Vorrei ordinare l' array in base a $visual_time['start'] per ottenere:

    codice:
    Array
    (
        [0] => Array
            (
                [start] => 0
                [end] => 4
                [color] => #9F0
                [status] => Disponibile
                [id] => 1
                [id_app] => 0
            )
            
        [1] => Array
            (
                [start] => 4
                [end] => 8
                [color] => #F00
                [status] => Non Disponibile
            )        
            
        [2] => Array
            (
                [start] => 8
                [end] => 12
                [color] => #F90
                [status] => Appuntamento
                [id] => 2
                [id_app] => 2
            )
    
        [3] => Array
            (
                [start] => 12
                [end] => 16
                [color] => #F00
                [status] => Non Disponibile
            )
    
        [4] => Array
            (
                [start] => 16
                [end] => 20
                [color] => #9F0
                [status] => Disponibile
                [id] => 3
                [id_app] => 0
            )
    
        [5] => Array
            (
                [start] => 20
                [end] => 24
                [color] => #9F0
                [status] => Disponibile
                [id] => 4
                [id_app] => 0
            )
    )
    cichity74

  2. #2
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  3. #3
    Originariamente inviato da dottwatson
    http://php.net/manual/en/function.array-multisort.php


    Ho provato con:
    Codice PHP:
    array_multisort($visual_time['start'], SORT_NUMERICSORT_ASC);
    // ..
    if (isset($visual_time)) {
        echo 
    "<pre>";
            echo 
    "\n--------------------------------------------------------------------\n";
            echo 
    "visual_time SORTING";
            echo 
    "\n--------------------------------------------------------------------\n";
            
    print_r($visual_time);
        echo 
    "</pre>";

    Ma mi da errore:
    Warning: array_multisort() [function.array-multisort]: Argument #1 is expected to be an array or a sort flag in /var/www/ect..ect

  4. #4
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    ahi formulato male glia rgomenti che passi alla funzione....

    guarda

    Example #3 Sorting database results

    è quello che ti spiega più chiaramente come poter adoperare questa funzione

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  5. #5
    Originariamente inviato da dottwatson
    ahi formulato male glia rgomenti che passi alla funzione....

    guarda

    Example #3 Sorting database results

    è quello che ti spiega più chiaramente come poter adoperare questa funzione

    Nel esempio da te indicato viene usato un foreach per ottenere le chiavi su cui fare l'ordinamento
    nel mio caso l'array ha già dei valori di riferimento su cui fare l'ordinamento
    io vorrei farlo su ['start']
    come riportato nel mio primo post
    ma non riesco a capire la sintassi...


  6. #6
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    prova così

    Codice PHP:
    <?php
    $start
    =array();
    foreach(
    $visual_time as $rec){
        
    $start[]=$rec['start'];
        }

    array_multisort($visual_time,SORT_ASC$start);

    echo 
    "<pre>";
    print_r($visual_time);
    echo 
    "</pre>";

    ?>
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  7. #7
    Grazie ora funziona (utilizzando SORT_NUMERIC)
    Codice PHP:
    array_multisort($visual_timeSORT_NUMERIC$start); 
    una curiosità è indispensabile il foreach per la comparazione?

    cichity74

  8. #8
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    è inidspensabile che tu fornisca alla funzione un sareie di dati utili tali per cui la funzione ordini gli elementi. poi, dato l' ordine degli indici e i valori, la funzione farà quello che richiedi

    il foreach serve proprio a questo... collezionare tra i record estratti i dati necessari per effettuare l'ordinamento

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  9. #9
    grazie x il chiarimento

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    79
    Mi collego al discorso dell'ordinamento di array multidimensionale per sottoporvi il mio caso.

    Ho due array bidimensionali cosi' strutturati:

    Codice PHP:
    Array1
      
    (
        [
    0] => Array
            (
              [
    id] => 
              [
    price] => 
              [
    id_engine] =>
            )
    ....
      ) 
    Li combino con array_merge e li ordino per prezzo con array_multisort.
    L'array finale puo' contenere fino a 1000 elementi (1000 X 3) e le prestazioni non sono esaltanti. Potrebbe valere la pena di utilizzare mysql? Avreste qualche referenza da suggerirmi?


    Thanks

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 © 2024 vBulletin Solutions, Inc. All rights reserved.