Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768

    ordinare un array complesso

    ciao a tutti e buona domenica

    vi spiego ho un'array ordinato in base al campo titolo:

    $array_categorie[3] = array('titolo'=>'auto,'livello'=>'');
    $array_categorie[8] = array('titolo'=>'ducati,'livello'=>'5');
    $array_categorie[2] = array('titolo'=>'f40,'livello'=>'3-1');
    $array_categorie[1] = array('titolo'=>'ferrari,'livello'=>'3');
    $array_categorie[7] = array('titolo'=>'honda,'livello'=>'5');
    $array_categorie[5] = array('titolo'=>'moto,'livello'=>'');
    $array_categorie[9] = array('titolo'=>'nissan,'livello'=>'3');
    $array_categorie[10] = array('titolo'=>'pajero,'livello'=>'3-9');
    $array_categorie[6] = array('titolo'=>'rosso,'livello'=>'3-1-2');
    ...

    dovrei ordinarlo in questo modo:
    1) mettere prima la variabile che ha livello='';
    2) farlo seguire dalla variabile che ha il livello che inizia con l'id di quella del punto (1);
    3) accodare via via in base alla lunghezza del livello;
    4) ricominciare dal punto 1 con la prossima variabile a livello='';

    e ottenere questo:

    $array_categorie[3] = array('titolo'=>'auto,'livello'=>'');
    $array_categorie[1] = array('titolo'=>'ferrari,'livello'=>'3');
    $array_categorie[2] = array('titolo'=>'f40,'livello'=>'3-1');
    $array_categorie[6] = array('titolo'=>'rosso,'livello'=>'3-1-2);
    $array_categorie[9] = array('titolo'=>'nissan,'livello'=>'3');
    $array_categorie[10] = array('titolo'=>'pajero,'livello'=>'3-9');

    $array_categorie[5] = array('titolo'=>'moto,'livello'=>'');
    $array_categorie[8] = array('titolo'=>'ducati,'livello'=>'5');
    $array_categorie[7] = array('titolo'=>'honda,'livello'=>'5');

    spero sia chiaro
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  2. #2
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    up
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  3. #3

    Re: ordinare un array complesso

    Innanzitutto c'è un errore di sintassi in tutte le istruzioni.

    $array_categorie[3] = array('titolo'=>'auto,'livello'=>'');

    devi sostituirlo con

    $array_categorie[3] = array('titolo'=>'auto', 'livello'=>'');

    cioé dopo 'auto ci vuole l'apice di chiusura che hai omesso.


    Poi

    Originariamente inviato da gasmor
    vi spiego ho un'array ordinato in base al campo titolo:

    $array_categorie[3] = array('titolo'=>'auto,'livello'=>'');
    $array_categorie[8] = array('titolo'=>'ducati,'livello'=>'5');
    $array_categorie[2] = array('titolo'=>'f40,'livello'=>'3-1');
    $array_categorie[1] = array('titolo'=>'ferrari,'livello'=>'3');
    $array_categorie[7] = array('titolo'=>'honda,'livello'=>'5');
    $array_categorie[5] = array('titolo'=>'moto,'livello'=>'');
    $array_categorie[9] = array('titolo'=>'nissan,'livello'=>'3');
    $array_categorie[10] = array('titolo'=>'pajero,'livello'=>'3-9');
    $array_categorie[6] = array('titolo'=>'rosso,'livello'=>'3-1-2');
    ...

    Veramente non lo hai ordinato, perché se tu lo avessi ORDINATO, sarebbe:

    $array_categorie[0] = array('titolo'=>'auto,'livello'=>'');
    $array_categorie[1] = array('titolo'=>'ducati,'livello'=>'5');
    $array_categorie[2] = array('titolo'=>'f40,'livello'=>'3-1');
    $array_categorie[3] = array('titolo'=>'ferrari,'livello'=>'3');
    $array_categorie[4] = array('titolo'=>'honda,'livello'=>'5');
    $array_categorie[5] = array('titolo'=>'moto,'livello'=>'');
    $array_categorie[6] = array('titolo'=>'nissan,'livello'=>'3');
    $array_categorie[7] = array('titolo'=>'pajero,'livello'=>'3-9');
    $array_categorie[8] = array('titolo'=>'rosso,'livello'=>'3-1-2');

    Quindi, spiegati: cosa intendi con il fatto che hai un array ordinato sul titolo?


    Originariamente inviato da gasmor
    dovrei ordinarlo in questo modo:
    1) mettere prima la variabile che ha livello='';
    2) farlo seguire dalla variabile che ha il livello che inizia con l'id di quella del punto (1);
    3) accodare via via in base alla lunghezza del livello;
    4) ricominciare dal punto 1 con la prossima variabile a livello='';

    e ottenere questo:

    $array_categorie[3] = array('titolo'=>'auto,'livello'=>'');
    $array_categorie[1] = array('titolo'=>'ferrari,'livello'=>'3');
    In base al tuo ragionamento hai:

    1) mettere prima la variabile che ha livello='';

    $array_categorie[3] = array('titolo'=>'auto','livello'=>'');

    2) farlo seguire dalla variabile che ha il livello che inizia con l'id di quella del punto (1);

    $array_categorie[1] = array('titolo'=>'ferrari','livello'=>'3');

    Cosa intendi per id???? Per caso l'indice dell'array $array_categorie?????

    In questo caso:
    C'è anche
    $array_categorie[6] = array('titolo'=>'nissan','livello'=>'3');
    che ha livello 3 allora perché hai preso Ferrari?

  4. #4
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    ciao gianf_tarantino,


    Innanzitutto c'è un errore di sintassi in tutte le istruzioni.
    Si hai ragione, ho sbagliato a scriverlo qui sul forum

    Veramente non lo hai ordinato, perché se tu lo avessi ORDINATO, sarebbe:
    io ho scritto che è ordinato in base al campo 'titolo' (cioè alfabeticamente) quindi: auto, ducati, f40, ferrari, honda ....

    Cosa intendi per id???? Per caso l'indice dell'array $array_categorie?????
    si

    In questo caso:
    C'è anche
    $array_categorie[6] = array('titolo'=>'nissan','livello'=>'3');
    che ha livello 3 allora perché hai preso Ferrari?
    perchè ferrari alfabeticamente viene prima di nissan

    Ti mostro il risultato che devo ottenere in un altro modo così magari è più chiaro:

    auto
    auto -> ferrari
    auto -> ferrari -> f40
    auto -> ferrari -> f40 -> rosso
    auto -> nissan
    auto -> nissan -> pajero
    moto
    moto -> ducati
    moto -> honda

    spero che così sia più chiaro.

    ovviamente l'array è più grande e quindi potrebbe essere anche così:

    auto
    auto -> ferrari
    auto -> ferrari -> f40
    auto -> ferrari -> f40 -> rosso
    auto -> ferrari -> f40 -> giallo
    auto -> ferrari -> testa rossa
    auto -> ferrari -> testa rossa -> nera
    auto -> nissan
    auto -> nissan -> pajero
    moto
    moto -> ducati
    moto -> honda

    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  5. #5
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    sempre tornando sul conceto ordinato per "titolo":

    l'array viene creato tramite una query che fa

    select * from table order by titolo Desc

    while ($row_categ = mysql_fetch_array($res_categorie)) {
    $array_categorie[$row_categ['id']] = array('titolo'=>$row_categ['titolo'], 'livello'=>$row_categ['livello']);
    }

    cioè, sebbene gli id non siano ordinati, l'array ha questa sequenza (ordinato con ORDER BY titolo DESC) e facendo un foreach ottengo appunto:

    $array_categorie[3] = array('titolo'=>'auto','livello'=>'');
    $array_categorie[8] = array('titolo'=>'ducati','livello'=>'5');
    $array_categorie[2] = array('titolo'=>'f40','livello'=>'3-1');
    $array_categorie[1] = array('titolo'=>'ferrari','livello'=>'3');
    $array_categorie[7] = array('titolo'=>'honda','livello'=>'5');
    $array_categorie[5] = array('titolo'=>'moto','livello'=>'');
    $array_categorie[9] = array('titolo'=>'nissan','livello'=>'3');
    $array_categorie[10] = array('titolo'=>'pajero','livello'=>'3-9');
    $array_categorie[6] = array('titolo'=>'rosso','livello'=>'3-1-2');

    In pratica io dovrei riuscire a costruirmi l'array ordinato all'interno del while...
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  6. #6
    ma fare un:
    codice:
    select * from table 
    order by titolo, livello
    poi fai un array numerico e metti l'id come attributo di quell'array numerico invece che prima chiave ....

    es.:
    codice:
    while ($row_categ = mysql_fetch_array($res_categorie)) {
    
    $array_categorie[] = array('titolo' => $row_categ['titolo'], 'livello' => $row_categ['livello'], id => $row_categ['id']);
    
    }

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    ciao piero.mac

    purtroppo sono obbligato a dover mettere l'id della categoria nell'array perchè lo utilizzo per avere, appunto, il nome della categoria...

    cioè io assegno alle mie inserzioni l'id della categoria a cui appartengono. Poi con l'array ne ricavo il nome...
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  8. #8
    Originariamente inviato da gasmor
    ciao piero.mac

    purtroppo sono obbligato a dover mettere l'id della categoria nell'array perchè lo utilizzo per avere, appunto, il nome della categoria...

    cioè io assegno alle mie inserzioni l'id della categoria a cui appartengono. Poi con l'array ne ricavo il nome...
    guarda che c'e'. Semplicemente non lo usi come indice principale dell'array. Anche perche' serve a nulla come indice, ma solo come valore per avere il nome della categoria.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.