Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 40
  1. #1

    creare array da questa stringa

    Ciao ho tutti, ho trovato del codice che mi permette di ordinare un menù tramite jquery.

    una volta finito il sort ottengo questa stringa di esempio, che dovrei elaborare per poi assegnare i valori nella tabella del database.

    $stringa" [{"id":1},{"id":2,"children":[{"id":3},{"id":4},{"id":5,"children":[{"id":6},{"id":7},{"id":8}]},{"id":9},{"id":10}]},{"id":11},{"id":12}] ";

    P.S. la stringa naturalmente, non ha questi esatti valori, può essere più o meno lunga ed avere menu "children" dove io decido di spostarli a seconda della mia esigenza (lo so .. sono contorto )


    la posso trasformare in un array? se si come ?!

    Grazie a tutti per l'aiuto!
    Ultima modifica di aquatimer2000; 22-09-2014 a 15:39
    aquatimer2000

  2. #2
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    provo a fare dei tentativi, in alternativa, un aiuto a decodificarla ?

    grazie mille comunque per la risposta, provo!
    aquatimer2000

  4. #4
    Ho provato con il seguente codice:

    Codice PHP:
    $json="[{"id":1},{"id":2,"children":[{"id":3},{"id":4},{"id":5,"children":[{"id":6},{"id":7},{"id":8}]},{"id":9},{"id":10}]},{"id":11},{"id":12}]";


    $array json_decode($json);


    foreach (
    $array as $key => $jsons)
    {
        foreach(
    $jsons as $key => $value)
        {
            echo 
    "$key > $value<br/>";
        }

    ma a video ottengo stampati solo questi valori:

    id > 1
    id > 2
    children > Array
    id > 11
    id > 12


    dove devo correggere?
    come posso scrivere un ciclo che funzioni correttamente a prescindere da come sono posizionati i valori ?
    aquatimer2000

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    Codice PHP:
    function cicla ($arr) {
        
    $res "";
        foreach (
    $arr as $key => $val) {
            
    $res += $key " > " + (is_array($val) ? "{<br>\n" cicla($val) + "}" $val) + "<br>\n";
        }
        return 
    $res;
    }

    echo 
    cicla($array); 
    Prova così

    oppure
    Codice PHP:
    printf("<pre>%s</pre>"print_r($arraytrue)); 
    No

  6. #6
    dove inserisco il codice che hai postato ?!

    dopo
    $array = json_decode($json);

    ?
    aquatimer2000

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    json_decode non torna proprio un array ma un dataset che rispecchia la struttura della stringa json di origine.

    Codice PHP:
    <?php
    function print_result($array$tab 0) {
     foreach (
    $array as $value) {
      if (isset(
    $value->id)) {
        print 
    str_repeat'-' $tab )."id=$value->id<br/>";
      }    
      if (isset(
    $value->children)) {
        print 
    str_repeat'-' $tab )."begin children of id=$value->id<br/>";
        
    $tab2 $tab;   
        
    print_result($value->children,++$tab2);
        print 
    str_repeat'-' $tab )."end children of id=$value->id<br/>";
      }
     } 
     return; 
    }
    $json='[{"id":1},{"id":2,"children":[{"id":3},{"id":4},{"id":5,"children":[{"id":6},{"id":7},{"id":8}]},{"id":9},{"id":10}]},{"id":11},{"id":12}]';
    $array json_decode($json);
    print_result($array);
    ?>


    codice:
    id=1
    id=2
    begin children of id=2
    ---id=3
    ---id=4
    ---id=5
    ---begin children of id=5
    ------id=6
    ------id=7
    ------id=8
    ---end children of id=5
    ---id=9
    ---id=10
    end children of id=2
    id=11
    id=12
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    ok, quindi che soluzioni posso adottare per scorrere tutto il dataset, ipotizzando:

    Codice PHP:
    $numero_max_children_nidificati10 

    io al momento sono sceso fino al 1° sub-livello con questo barbatrucco:

    Codice PHP:
    $array json_decode($area2,true);
    foreach (
    $array as $key => $value)
    {
        foreach(
    $value as $k1 => $v1)
        {
             if(
    $k1=="children")
            {
                
    $array1=$v1;
                foreach(
    $array1 as $k2 => $v2)
                {
                    foreach(
    $v2 as $k3 => $v3)
                   {
                         
    //primo sotto livello
                        
    print"$k3$v3<br/>";
                    }
                }
            }
            else
           {
                 
    //livello padre
                
    print"$k1$v1<br/>";
            }
        }

    ma c'è un modo più pratico per fare sta cosa ?!
    se avessi 20 sotto-livelli me prende un colpo !!
    intanto grazie a tutti per l'aiuto !!
    aquatimer2000

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Ma hai provato il mio codice ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  10. #10
    wow !
    quindi al posto dei print posso mettere le istruzioni SQL per aggiornare la tabella sul mio database giusto ?!
    aquatimer2000

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.