Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    740

    [PHP] Sorting su Array Multidimensionale

    Ciao a tutti, avrei un problema, ho visto diversi esempi online ma mi sto bloccando nell'applicarli.

    Ho un array multidimensionale così composto:

    codice:
    Array
    (
        [0] => Array
            (
                [id] => 12
                [campo_a] => ciao
                [campo_b] => nove
            )
    
        [1] => Array
            (
                [id] => 1354
                [campo_a] => aaaa
                [campo_b] => sss
            )
    
         ...
    )
    Attualmente l'array viene compilato in un certo ordine, a me tuttavia servirebbe poterlo ordinare per il campo id (ora non è ordinato su quel campo) e ciclarlo tutto, finora usavo un $for sull'indice, quindi dovrei passare al foreach, mi chiedo solo come usare sort/usort per ordinarlo come mi serve, grazie !
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,918
    Io uso questa funzione
    Codice PHP:
    /**
     *    Ordina un array multidimensionale rispetto ad un indice
     *
     *    @param    array     $array    array da ordinare
     *    @param    string    $on    nome dell'indice in base a cui ordinare
     *    @param    costant    $order    SORT_ASC/SORT_DESC per indicare il verso dell'ordinamento
     *
     *    @return    l'array ordinato
     */
    public function array_sort($array$on$order=SORT_ASC)
    {
        
    $new_array = array();
        
    $sortable_array = array();

        if (
    count($array) > 0) {
            foreach (
    $array as $k => $v) {
                if (
    is_array($v)) {
                    foreach (
    $v as $k2 => $v2) {
                        if (
    $k2 == $on) {
                            
    $sortable_array[$k] = $v2;
                        }
                    }
                } else {
                    
    $sortable_array[$k] = $v;
                }
            }

            switch (
    $order) {
                case 
    SORT_ASC:
                        
    asort($sortable_array);
                break;
                case 
    SORT_DESC:
                    
    arsort($sortable_array);
                break;
            }

            foreach (
    $sortable_array as $k => $v) {
                
    $new_array[$k] = $array[$k];
            }
        }

        return 
    array_values($new_array);


  3. #3
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Presumo la funzione che serva a te sia questa :

    http://php.net/manual/en/function.array-multisort.php
    Che mestiere difficile.....essere da soli ancora di più

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,918
    Originariamente inviato da Fractals87
    Presumo la funzione che serva a te sia questa :

    http://php.net/manual/en/function.array-multisort.php
    No, quella lì fa una cosa diversa.

  5. #5
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    740
    Scusate mi son sbagliato nell'array non ho l'associazione chiave valore, quindi ho

    codice:
     
    Array(
       [0] => Array (12,'ciao','nove')
       ...
    E' possibile usare comunque quella funzione?
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

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