Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,610

    ordinare array a gruppi

    salve ho un array di array di chiavi

    tipo
    Array
    (
    [0] => Array
    (
    [level] => 3
    [nome] => fsdfjsdfjsdlk
    [id] => 55
    [sx] => 107
    [dx] => 128
    [lato] => S
    [link] =>
    [linkselfpage] =>
    [ordine] => 0
    [subhome] => ammininistrazione
    )

    [1] => Array
    (
    [level] => 3
    [nome] => Consiglio Comunale xx
    [id] => 107
    [sx] => 197
    [dx] => 204
    [lato] => S
    [link] =>
    [linkselfpage] =>
    [ordine] => 0
    [subhome] => ammininistrazione
    )
    e tanti altri
    )

    Io dovrei ordinare ogni elemento in base al valore della chiave ordine ma solo nell'ambito del gruppo dello stesso livello "Lineare" cioè potrei avere sotto forma di elenco questo


    1-pippo-L1-2
    1-tizio-L1-1
    2-caio-L1-3
    2-sempro-L1-4
    3-marco-L1-5
    3-piero-L1-3
    4-tore-L1-1

    dovrebbe diventare

    1-tizio-L1-1
    1-pippo-L1-2
    --
    2-caio-L1-3
    2-sempro-L1-4
    --
    3-piero-L1-3
    3-marco-L1-5
    --
    4-tore-L1-1

    Qualche idea ?
    R.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,610
    sto cercando di minimizzare
    il prolema

    e più omenno ci sono riuscito solo nn capisco perchè
    usort non funziona esegue qualche operazione manon l'ordinamento

    la callback è questa:

    function cmp2($a, $b)
    {
    $a1 = (int)$a->ordine;
    $b1 = (int)$b->ordine;

    /*
    var_dump($a1);
    var_dump($b1);
    var_dump(strcmp($a1, $b1));
    echo "<hr/>";
    */

    if ($a == $b) {
    return 0;
    }
    return ($a < $b) ? -1 : 1;

    //return cmp($a1, $b1);
    }



    l'array è un array tipo questo è un array di array
    strutturato ad albero
    quindi avrò livello 0, livello1, livello2 etc

    io dovre ordinare e chiamare usort per ogni livello e lo faccio
    ma nn fa l'ordinamento

    da codice ho qualcosa tipo

    codice:
    usort($nodi->child, "cmp2");
     for ($i=0; $i<count($nodi->child); $i++)
    {
        $n = $nodi->child[$i];
    
                   if (count($n->child) >0 and $n->level<3) 
                   //il tre solo per ora perchè sto facendo debgu
                   {
                      $this->deph++;
                      $this->showNode($n);
                      $this->deph--;
                   } 
    }
    ogni n è un oggetto nodo semplice
    $node->livello
    $node->nome
    $nome->ettt....

    HELP ME!!! :master: :master: :master: VVoVe: VVoVe:
    R.

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.