Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: unset e array

  1. #1

    unset e array

    Buongiorno a tutto il fourm...
    Allora, sicuramente l'argomento è stato sviscerato, ma le ricerche non mi hanno aiutato molto.

    Sto usando var di sessione per un carrelo della spesa, e voglio eliminare un prodotto nella lista

    con la var $sid indico qual'è l'indice del prodotto da eliminare, la invio allo script
    unset ($_SESSION['prodotto'][$sid]);
    di fatto la elimina e accorcia anche l'array, ma la cosa strana è che le posizioni degli altri elemnti non scala!!! almeno credo.

    Qui le mie pagine (empiriche direi)
    carrello
    var di sessione
    aggiungi un prodotto
    modifica e cancella

    probabilmete l'array va rinfrescato dopo l'eliminazione!!! bho?
    se Mano lava Mano... Gina lava Gina

    ScrollbarsPainter05 per colorare le scrollbar

    Metaphysique - this stuff rocks!!!

  2. #2
    non scala???

    in che senso?

  3. #3
    ciao!
    nel senso che...
    [0]=mele
    [1]=pere
    [2]=abbacchio

    se elimino [2]
    la lista è lunga 2 e rimangono

    mele
    pere

    ma se elimino [1]

    la lista diventa comunque lunga due

    ma invece di

    mele
    abbacchio

    otteno

    mele
    [spazio vuoto]
    e se allungo il ciclo oltre la lunghezza dell'array mi scrive abbacchio che continua ad avere come indice [2] e non [1]

    Quindi se ilterzo prodotto [2] che diventa il secondo cioè [1] rimane al terzo posto... l'elemento è rimasto dov'è...

    Come se l'indice invece di essere numerico fosse letterale (non 5, ma '5'), ma questo mi sembra starno.
    se Mano lava Mano... Gina lava Gina

    ScrollbarsPainter05 per colorare le scrollbar

    Metaphysique - this stuff rocks!!!

  4. #4
    non devi ciclare sui valori numerici... gli array in php sno sempre e comunque associativi... usa foreach per ciclare sugli array

    www.php.net/foreach


  5. #5
    unset si limita a cancellare....

    prova poi ad eseguire

    sort($array);
    reset($array);


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

  6. #6
    Ciao, vi ringrazio
    Con reset gli indici rimangono invariati quindi non funge con i cicli for...
    devo cambiare tutti i for in foreach, spero sia una operazione compatibile con il lavoro già svolto altrimenti devo crearmi degli arrei tmp dove copio i valori dell'array esistente escludendo quelli vuoti e poi riverso il tutto nell'array originale... che palle!!!

    spizzare...
    http://it2.php.net/reset

    sort() invece ricostruisce la chiavi ma deve riordinare ordinare la lista, io vorrei rimanesse con l'ordine di inserimento.
    Fa quasi al caso mio... magari una variante sort, mi risolve il problema.
    se Mano lava Mano... Gina lava Gina

    ScrollbarsPainter05 per colorare le scrollbar

    Metaphysique - this stuff rocks!!!

  7. #7
    guarda che reset() serve dopo il sort() per riportare il puntatore all'inizio dell'array. Sort() lo lascia al fondo. Chiaro che reset() da solo faccia una pippa...

    prova con le varie funzioni che hai a disposizione per gli array...

    ma sono partito dal principio che se cambi l'indice numerico per compattarlo poca importanza abbia l'associazione indice <-> contenuto




    ps.... usa asort() invece di sort(). Mantiene l'associazione degli indici.


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

  8. #8
    Ciao Piero,
    Si non ha importanza se abbacchio prima era prodotto [1] ed ora è prodotto[2]

    Ma trattandosi di un carrello, preferivo che gli aquisti rimanessero ordinati secondo l'ordine di aquisto.

    Comunque foreach funziona, ma devo ripercorrere alcune cose,
    la tua soluzione invece si aggancia a quello che ho fatto io... quello che cerco è più o meno così

    array:
    prod[0]=mele
    prod[1]=pere
    prod[2]=abbacchio
    prod[3]=lingua di bue

    unset(prod[2])

    e diventa (giustamente)
    prod[0]=mele
    prod[1]=pere
    prod[3]=lingua di bue

    ora vorrei farlo diventare
    prod[0]=mele
    prod[1]=pere
    prod[2]=lingua di bue

    Come la vedete?
    Considerate che gli array sono 5 o 6, cioè prod[0]=mele - prezzo[0]=prezzo delle mele.
    Ogni prodotto ha altre caratteristiche da associare.

    Credo che le soluzioni che mi avete suggerito siano due strade valide colgo l'occasione per studiarle entramebe.
    se Mano lava Mano... Gina lava Gina

    ScrollbarsPainter05 per colorare le scrollbar

    Metaphysique - this stuff rocks!!!

  9. #9
    prova allora ksort() oppure asort()

    in quanto allo scorrere gli array si deve usare foreach e non for come gia' ha detto guidoz.

    foreach si comporta come il while, va avanti finche' non riceve FALSE, mentre con il for devi contare tu gli elementi da scorrere ed e' meno performante.....


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

  10. #10
    bueno, vi ringrazio per le preziose info...
    Ciao
    se Mano lava Mano... Gina lava Gina

    ScrollbarsPainter05 per colorare le scrollbar

    Metaphysique - this stuff rocks!!!

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.