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

    Ordinare alfabeticamente array multimensionale

    vorrei realizzare una pagina php che viene popolata da un array multidimensionale che penso avrà piu o meno questa forma...


    $dati = array(
    array ("Marco Bianchi", "foto.jpg", "bla bla bla"),
    array ("Pincopallo", "", "bla bla bla"),
    array ("Leonardo Pierantoni", "foto_a.jpg", "blas bla bla"),

    );

    volevo sapere come posso fare per ottenere un output nel quale vengono raggruppate, alfabeticamente, sulla prima lettera del primo campo dell'array e ne venga fatto un'elenco, eccone un esempio (dove però le lettere non "usate" non vengno mostrate..):

    L:

    Leonardo Pierantoni
    -----------------
    M:

    Marco Bianchi
    ----------
    P:

    Pincopallo
    ---------


    Grazie

  2. #2
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    per l'ordinamento usa le funzioni sort o array_multisort.. consulta il manuale per utilizzarle correttamente

    per la questione dell'elenco alfabetizzato, segui questa valori suddivisi e ordinati naturalmente il tuo array è equivalente ad un recordset in questo caso..

    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  3. #3
    Ho guardato sul manuale (http://it2.php.net/array_multisort) array_multisort, ma non sono riuscito a saltarne fuori...
    Negli esempi le righe dell'array sono fisse e cosi le confrontano, invece le mie non so a priori quante potranno essere e quindi non capisco come fargliere confrontare tutte (cmq solo per il primo campo..)

    se mi puoi dare una mano te ne sarei grato

  4. #4
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    certo..
    io ho provato il tuo array con la funzione sort e funge.. fai qualche prova.. può darsi che la mia sia stata fortuna...
    altrimenti esiste una soluzione un può più elaborata...

    quando popoli l'array crei un mini array di appoggio.. un indice con l'associazione chiave_da_ordinare => riferimento_all'elemento_dell'array_effettivo (oppure semplicemente l'indice di quest'ultimo)

    in tal modo lavori agevolmente sull'array "indice" e quando vuoi trovi ordinato anke quello principale usando l'indice come cursore.. faccio un esempio pratico altrimenti la cosa sembra difficile....

    Codice PHP:
    // il tuo array
    $dati = array(
    array (
    "Marco Bianchi""foto.jpg""bla bla bla"),
    array (
    "Pincopallo""""bla bla bla"),
    array (
    "Leonardo Pierantoni""foto_a.jpg""blas bla bla"),
    ); 

    // l'indice
    $indx = array(
    "Marco Bianchi" => 0,
    "Pincopallo" => 1,
    "Leonardo Pierantoni" => 2,
    );

    // ordino l'indice senza portarmi dietro niente di pesante:
    sort($indx);

    // quando stampo recupero da quello "pesante" tramite il suo "riferimento"
    foreach($indx as $nome => $id)
    print_r($dati[$id]); 
    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  5. #5
    Ho fatto di meglio e ti allego un esempio
    codice:
    <?php
    
    // demo array to sort
    $latest_array = array(
     array('news','1234567890','','asdpojq'),
     array('news','1234567892','uruy','xbuqiwpo'),
     array('comment','1234567893','fghj','mjktyu'),
     array('article','1234567891','cvmo','pjklgg'),
     array('news','1234567894','qwenb','asbhtyhj'),
    );
    
    $sort_field = 0; // enter the number of field to sort
    
    // compare function
    function cmpi($a, $b)
    {
    	global $sort_field;
    	return strcmp($a[$sort_field], $b[$sort_field]);
    }
    
    // do the array sorting
    usort($latest_array, 'cmpi');
    
    for ($i=0, $m = sizeof($latest_array); $i < $m; $i++) {
    
        	echo "\t
    
    ". $latest_array[ $i ][0] ."</p>\n";
        	echo "\t
    
    ". $latest_array[ $i ][1] ."</p>\n";
        	echo "\t
    
    ". $latest_array[ $i ][2] ."</p>\n";
        	echo "\t
    
    ". $latest_array[ $i ][3] ."</p>\n";
    
            }
    ?>
    ora ti chido di aiutarmi per il problema dei valori suddivisi che vorrei ottenere...

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.