Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592

    raggruppare array stesso nome/chiave

    Salve, con gli array non sono proprio in grado di fare nulla o quasi..

    Ho un array con unserialized con un carrello di prodotti salvato sul DB.
    Vorrei che ciclando questo array "unserializzato", e questo è ok lo faccio già, a valori uguali mi aggiungesse 1 come quantità.
    in sostanza vorrei che mi restituisse da:
    [desc] => elemento 1
    [desc] => elemento 2
    [desc] => elemento 3
    [desc] => elemento 1
    [desc] => elemento 3
    [desc] => elemento 1

    una roba simile

    elemento 1 -> 3
    elemento 2 -> 1
    elemento 3 -> 2

    avevo già aperto una discussione molto simile ma poi è servita ad altro

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    elemento 1, elemento 2... devono essere chiavi del nuovo array?
    In tal caso ti crei un nuovo array vuoto, poi inizi il ciclo su quello pieno.
    - Leggi il primo elemento dell'array unserializato, con array_key_exists() vedi se nel nuovo array c'è una chiave con quel nome
    --- se la chiave non c'è, crei una nuova entry con chiave ad esempio elemento 1 se quello era il valore trovato e metti come valore 1
    --- se la chiave già c'è, fai $nuovo_array['elemento 1']++ (sempre se il valore trovato era elemento1)

    fine.

  3. #3
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    intanto grazie, mi hai aiutato anche la scorsa volta tu, ma non sono riuscito ad andare avanti lo stesso
    diciamo che ciclando l'array unserializzato ottengo una cosa tipo:
    tizio
    caio
    tizio
    sempronio
    caio

    ora provo con l'aiuto che mi hai dato sopra, ma aspettati che torno...

  4. #4
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    WOW.. questo mi restituisce

    Codice PHP:

    if(array_key_exists($web_descrizione,$nuovo_array)) {$nuovo_array[$web_descrizione]['quantita']++;
    } else {
    $nuovo_array[$web_descrizione]['quantita'] = 1;}
    print_r($nuovo_array
    mi restituisce
    Array ( [tizio] => Array ( [quantita] => 2 ) [sempronio] => Array ( [quantita] => 1 ) [caio] => Array ( [quantita] => 2 ) )
    ora come faccio a dirgli ad esempio di formattarlo in una tabella o un div?
    (COMUNQUE GRAZIEEEEEEEE FINORA, sei preziosissimo )

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Dipende da come vuoi impaginare la tabella, se su due righe (sopra i nomi e sotto i valori) oppure se su due colonne (a sinistra i nomi e a destra i valori).

    In entrambi i casi dovrai comunque ciclare l'array generato con
    foreach($nuovo_array as $key => $value)

    in $key avrai i nomi delle chiavi e in $value i valori associati.
    Su 2 colonne è immediato perché ad ogni iterazione hai tutti i dati necesari per generare la riga, su 2 righe invece dovrai ciclare 2 volte, perché ti servono prima tutte le chiavi e poi tutti i valori.

  6. #6
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    farei 2 colonne
    ora provo

  7. #7
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    mi restituisce:
    tizio -- Array
    caio -- Array
    sempronio -- Array
    probabilmente perchè quantità è un array
    Array ( [quantita] => 2 )

    non c'è modo di farlo venire così:
    Array ( [tizio] =>[quantita] => 2 )
    o addirittura così
    Array ( [tizio] => 2 )

  8. #8
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    ho azzardato così:
    if(array_key_exists($descrizione,$nuovo_array)) {
    $nuovo_array[$descrizione]++;


    } else {
    $nuovo_array[$descrizione] = 1;
    }
    }

    credevo fosse più complicato
    credevo bisognasse dargli delle proprietà con i nomi eccetera..

    però ti ringrazio comunque, senza il tuo aiuto non avrei fatto tutto ciò

  9. #9
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    riapro questa discussione.
    il cliente mi ha chiesto se posso mettere altri 2 valori presi dall'array, uno è un'altra descrizione presa dal DB e uno è un testo opzionale di massimo 20 caratteri.
    ma non sono riuscito a capirci qualcosa, cioè a creare una cosa tipo:
    Array ( [tizio] => 2 , "allergia" , "medicine ancora da arrivare")

    cioè provo così:
    if(array_key_exists($descrizione,$nuovo_array)) {
    $nuovo_array[$descrizione]++;
    $nuovo_array[$descrizione][$categoria];
    $nuovo_array[$descrizione][$modifica];





    } else {
    $nuovo_array[$descrizione] = 1;
    }
    }
    ma non ho risultati, nel senso non ho nulladi nuovo


  10. #10
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    un'altra cosa che non mi funziona:
    giustamente accedo agli elementi dell'array così
    foreach( $carrello as $item )
    {
    $mio_id = $item->id;
    e con questo mio_id faccio una query per avere dei valori da DB.
    ma se sotto a questo faccio così
    foreach( $carrello as $item )
    {
    $mio_id = $item->id;
    $modifica = $item->mod;



    il valore $modifica mi dice che è un array, ma in effetti non lo è..

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.