Visualizzazione dei risultati da 1 a 10 su 10

Discussione: riordinare un array

  1. #1
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716

    riordinare un array

    ciao, se io ho un array
    codice:
    $casa[0]="bianca";
    $casa[1]="blu";
    $casa[2]="verde";
    e voglio eliminare il campo 1, cioè:
    codice:
    unset($casa[1]);
    c'è un modo per far si che l'ordine dell'array diventi
    codice:
    $casa[0]="bianca";
    $casa[1]="verde";
    invece di
    codice:
    $casa[0]="bianca";
    $casa[2]="verde";
    ?

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  2. #2
    fondamentalmente non c'è modo di tappare i buchi se non copiando su una nuovo array...

    ma in fn dei conti il problema è un altro:

    vuoi tappare i buchi per poterci ciclare con un for?

    in quel caso bada bene che esiste un foreach...

    se il motivo è un altro.. spiega... ci sarà un'altra soluzione.. nella mia esperienza non ho mai dovuto "tappare i buchi" in un array


  3. #3
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716
    mi serve per un carrello elettronico.
    ho un array con
    codice:
    $dati['obj'][0]="blu";
    $dati['qnt'][0]="5";
    $dati['prz'][0]="15";
    
    
    $dati['obj'][0]="verde";
    $dati['qnt'][0]="2";
    $dati['prz'][0]="6";
    
    
    $dati['obj'][0]="nero";
    $dati['qnt'][0]="2";
    $dati['prz'][0]="30";
    e quando uno elimina un oggetto, io lo sego con
    codice:
    $dele=$_POST["dele"];
    unset($dati['obj'][$dele]);
    unset($dati['qnt'][$dele]);
    unset($dati['prz'][$dele]);
    potrei usare il foreach ma dopo mi sballa cmq il conto degli oggetti (uso count($dati['obj']); non voglio listare tutti i dati e contarli in ogni pagina);

    quindi dovrei copiarmi l'array ogni volta che elimino l'oggetto? si può fare, ma preferirei qualcosa di più..'pulito'

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  4. #4
    count non dovrebbe dare errori se unsetti bene... probabilmente lo fa lui (che è compilato e quindi svelto) il cilclo.. e ti restituisce il conto

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    99
    scusa ma se fai un
    codice:
    sort(array);
    non funziona?

  6. #6
    Originariamente inviato da darkmic
    scusa ma se fai un
    codice:
    sort(array);
    non funziona?
    questo dovrebbe ordinarlo, ma non tappare i buchi...

    in fin dei conti anche gli array non associativi in realtà sono associativi... associano l'indice al valore... per cui gli indici sono delle vere e proprie chiavi, non una specie di contatore...

  7. #7
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357

    Re: riordinare un array

    Originariamente inviato da thitan
    ciao, se io ho un array
    codice:
    $casa[0]="bianca";
    $casa[1]="blu";
    $casa[2]="verde";
    Cosi hai provato?
    Riprendi l'array dopo aver eliminato i dati.
    Poi lo ricomponi.
    Codice PHP:
    $nuovo_array= array();
    foreach(
    $casa as $dati){
    $nuovo_array[] = $dati;


  8. #8
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716
    per ora ho risolto copiandomi l'array ogni volta che secco un dato, però appena ho un pò piò di tempo mi butto sul foreach (mai usato, odio tutti i cicli for per principio..darò una letta qua e la)

    grazie!

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  9. #9
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716

    Re: Re: riordinare un array

    Originariamente inviato da marco80
    Cosi hai provato?
    Riprendi l'array dopo aver eliminato i dati.
    Poi lo ricomponi.
    Codice PHP:
    $nuovo_array= array();
    foreach(
    $casa as $dati){
    $nuovo_array[] = $dati;

    in definitiva il mio array è una roba del genere
    Codice PHP:
    $dati['obj'][x]
    $dati['qnt'][x]
    $dati['prz'][x
    quini dovrei fare una cosa del tipo
    Codice PHP:
    $a=array();
    foreach(
    $dati as ???){
    $a['obj'][?]=$dati['obj'][?];
    $a['qnt'][?]=$dati['qnt'][?];
    $a['prz'][?]=$dati['prz'][?];

    considerando che se elimino un dato, le chiavi saranno sfasate tipo
    $dati['obj'][0]=xxxx;
    $dati['obj'][1]=xxxx;
    $dati['obj'][3]=xxxx;

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  10. #10
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    No non vengono sfasate perche' col nuovo ciclo e nuovo nome array(o sovrascritto) vai a riempire un altro array inserendo i dati da uno a uno e quindi gli indici numerici si rigenerano da 0 in poi.

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.