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

    Ordinare array multidimesionale

    Salve ho un array multidimensionale creato con un ciclo for , valori ricevuti selezionando dei checkbox :

    codice:
          $lista_pagine=[] ;
    
    
          for ($i = 0; $i < count($array_id_dati_ricevuti) ; $i++) {
            
            //recupero il documento in base all'id
            $documento = $this->documento_model->get_from_id($array_id_dati_ricevuti[$i]);
    
            //popolo l'array multidimensionale
            $lista_pagine[$i][] = $documento->num_documento;
            $lista_pagine[$i][] = date_local_format_from_iso($documento->data);
            $lista_pagine[$i][] = $documento->nominativo;
            $lista_pagine[$i][] = $documento->prezzo;
    
    
          }

    come faccio un sorting di $listapagine[$i] in base al num_documento ?

  2. #2
    Utente di HTML.it L'avatar di ninja72
    Registrato dal
    May 2020
    residenza
    -
    Messaggi
    96
    Potresti utilizzare sort() oppure usort(), dipende dalla struttura dell'array.

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,942
    Potresti usare questa funzione
    Codice PHP:
    /**
     *    Ordina un array multidimensionale rispetto ad una colonna
     *
     *    @param    array     $array    array da ordinare
     *    @param     string     $on        nome della colonna in base a cui ordinare
     *    @param    string    $order    asc/desc per indicare il verso dell'ordinamento
     *
     *    @return    array l'array ordinato
    */
    function sort_array_on_column($array$on$order='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 
    'asc':
                    
    asort($sortable_array);
                    break;

                case 
    'desc':
                    
    arsort($sortable_array);
                    break;
            }

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

        return 
    array_values($new_array);


  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    12
    Credo che num_documento è un numero "univoco" intero con ordine ascendente/decrescente, i dati sono già ordinati per lo più puoi iterare da 0 (la seconda parentesi quadra), $i termina quando è uguale a count($arr) se vuoi effettuare una ricerca per n tentantivi fino a trovare numero documento.
    L'array dovrà sempre iniziare da 0 e proseguire dal numero successivo a 0 altrimenti alcune funzioni php potrebbero dare risultati inaspettati.
    Altrimenti se vuoi prova a inserire num_documento al posto di $i d'altronde se unico è una chiave valida anche per php se non supera PHP_INT_MAX, ovviamente il ciclo for puoi anche inserire una variabile di count in modo da non iterare ogni volta e usa $i altrimenti non termini il loop.
    Ultima modifica di darbula; 09-07-2020 a 00:33

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.