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,574

    contare valori con unserialize

    Salve, sto cercando di capire come accedere alle "variabili" di unserialize, cioè se è un "array normale" oppure no..
    vorrei accomunare valori uguali e "sommarli".
    avendo:
    [desc] => elemento 1
    [desc] => elemento 2
    [desc] => elemento 3
    [desc] => elemento 1
    [desc] => elemento 3
    [desc] => elemento 1
    vorrei elaborarlo per farmi dare
    elemento 1 -> 3
    elemento 2 -> 1
    elemento 3 -> 2

    qualcuno mi delucida?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,593
    Cosa intendi con "array normale"?

    Comunque ti serve un secondo array, all'inizio vuoto.
    Cicli su quello pieno e ad ogni iterazione vedi se l'elemento corrente esiste già nell'array nuovo: se non esiste lo inserisci, se esiste aggiungi 1.

  3. #3
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,574
    per array "normale" intendo che se ho tipo
    $arr = ['tizio', 'caio', 'sempronio'];
    $arr[0] mi restituisce caio
    è da ieri che provo ad "entrare" nelle variabili con il metodo classico ma nulla..
    forse ho capito, ma dovrei creare un altro array sempre con 2 valori, il nome e la quantità
    da una roba del genere
    codice:
    [0] => stdClass Object        (
                [id] => 1
                [desc] => tizio
                
    [lista] => Array
                    (
                        [0] => 1
                        [1] => 2
                        [2] => 23
                        [3] => 90
                    )
    
    
                [cat_id] => 2
            )
    
    
        [1] => stdClass Object
            (
                [id] => 155
                [desc] => caio
                
    [lista] => Array
                    (
                        [0] => 
                    )
    
    
                [cat_id] => 8
            )
    
    
        [2] => stdClass Object
            (
                [id] => 155
                [desc] => caio
                
    [lista] => Array
                    (
                        [0] => 
                    )
    
    
                [cat_id] => 8
            )
    
    
        [3] => stdClass Object
            (
                [id] => 126
                [desc] => sempronio
                
    [lista] => Array
                    (
                        [0] => 
                    )
    
    
                [cat_id] => 5
            )
    
    
        [4] => stdClass Object
            (
                [id] => 126
                [desc] => sempronio
                
    [lista] => Array
                    (
                        [0] => 
                    )
    
    
                [cat_id] => 5
            )
    
    
        [5] => stdClass Object
            (
                [id] => 155
                [desc] => caio
                
    [lista] => Array
                    (
                        [0] => 
                    )
    
    
                [cat_id] => 8
            )
    non so come dirgli "se l'id è già nel secondo array somma 1 ad un valore"

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,593
    [0] => stdClass Object
    [1] => stdClass Object
    ...
    non sono array, sono standard object, ovvero istanze di oggetti generici.
    Se quei dati provengono da un json_decode(), per avere degli array devi passare true come secondo parametro.

    Per sapere se in un array una determinata chiave esiste puoi usare la funzione array_key_exists()

  5. #5
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,574
    vengono da "serialize" memorizzati in un DB..
    L'ho salvato come variabile ma se provo a fare quello che mi dici cioè
    se faccio
    $miavariabile= unserialize('a:9:{i:0;O:8:"stdClass"; // eccetera
    var_dump(json_decode($miavariabile, true));
    mi restituisce NULL
    Devo passare i dati unserializzati immagino, e così faccio ma nulla.. boh...
    Per sapere se in un array una determinata chiave esiste puoi usare la funzione array_key_exists()

  6. #6
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,574
    non credevo fosse così complicato..

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,593
    Prova a postare una stringa serializzata con la quale hai a che fare.

  8. #8
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,574
    eccola
    $carrello = unserialize('a:3:{i:0;O:8:"stdClass":9:{s:2:"id";s :1:"1";s:4:"desc";s:5:"tizio";s:6:"prezzo";s:4:"7. 00";s:7:"offerta";i:0;s:3:"mod";s:0:"";s:3:"cat";s :5:"cat_1";s:5:"lista";a:3:{i:0;s:1:"1";i:1;s:1:"2 ";i:2;s:2:"23";}s:6:"cat_id";s:1:"2";s:4:"menu";s: 5:"tutti";}i:1;O:8:"stdClass":9:{s:2:"id";s:2:"41" ;s:4:"desc";s:4:"caio";s:6:"prezzo";s:4:"2.00";s:7 :"offerta";i:0;s:3:"mod";s:0:"";s:3:"cat";s:5:"cat _2";s:5:"lista";a:0:{}s:6:"cat_id";s:1:"4";s:4:"me nu";s:5:"tutti";}i:2;O:8:"stdClass":9:{s:2:"id";s: 3:"186";s:4:"desc";s:9:"sempronio";s:6:"prezzo";s: 4:"2.20";s:7:"offerta";i:0;s:3:"mod";s:0:"";s:3:"c at";s:5:"cat_3";s:5:"lista";a:0:{}s:6:"cat_id";s:1 :"5";s:4:"menu";s:5:"tutti";}}');

    con id uguali, dovrebbe sommarmi i prodotti e con cat_id = 4 oppure 5, da vedere, dovrebbe escludere dall'array creato perchè sono prodotti che non sono necessari al resoconto

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,593
    Puoi accedere ai dati in questo modo
    Codice PHP:
    foreach( $carrello as $item )
    {
        echo 
    $item->id "<br>";

    Chiaramente puoi accedere ad ogni campo degli oggetti in questo modo.

  10. #10
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,574
    ecco appunto, era esattamente quello che cercavo
    ora mi invento qualcosa su come andare avanti
    già facendo questo, ho tolto parecchie cose che non mi servono
    foreach( $carrello as $item )
    {
    if($item->cat_id == 5) {
    echo "NIENTE";
    } else {
    echo $item->id . "<br>";
    }
    }
    c'è un modo "migliore" per fare quella riga dell'if?
    cioè questa
    if($item->cat_id == 5) { eccetera
    una cosa più elegante

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 © 2019 vBulletin Solutions, Inc. All rights reserved.