Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    267

    cancellare elemento array?

    ho guardato un po la documentazione online e mi sembra strano che non ci sia un comando tipo array_delete[$i] per cancellare un solo elemento facendo slittare tutti gli altri.
    tipo
    Array=A,B,C,D

    Array_delete[2]

    Array=A,B,D

  2. #2
    l'ideale sarebbe fare la select DOPO aver individuato l'eccezione, in questo modo estrai solo i dati che ti servono.
    Se invece hai bisogno di aggiornare l'array non so aiutarti...spiega meglio il problema comunque, magari c'è una soluzione alternativa...
    CIAO.

  3. #3
    http://it2.php.net/manual/it/ref.array.php#53714
    dal manuale:

    I've been trying to find a clean way of removing an element from the middle of an indexed array and having all the elements above it "fall down" to fill in the gap. There's no array_delete function, only array_(pop|push|shift|unshift).

    According to the page for array_merge if it is given a single array then it will be re-indexed. Using that information the following simple function does what I wanted:

    Codice PHP:
    <?php
    function my_array_delete($array$item) {
       if (isset(
    $array[$item]))
           unset(
    $array[$item]);
       return 
    array_merge($array);
    }
    ?>

    poi userai la funzione così:

    $array_nuovo = my_array_delete($array_vecchio, 2);





    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    55

    credo splittando

    non sò se esiste una funzione che fà esattamente ciò che chiedi;
    la cosa più immediata che mi viene in mente è convertire la matrice in stringa e splittarla.
    la vita è dura ... per gli altri!

  5. #5
    Utente di HTML.it L'avatar di ivy_76
    Registrato dal
    Dec 2004
    Messaggi
    1,822
    la parte IN INGLESE che ti hanno segnalato l'ho provata anche io. Pero ho notato che quando fai UNSET lui distrugge l'indice relativo e anche se vai array_merge perdi un elemento che NON avevi cancellato. Io ho risolto in un'altra maniera. Scandisco l'array e copio il suo contenuto cella per cella in un secondo array e quando trovo l'elemento che non mi serve, semplicemente lo escludo dalla copia. Forse se ti faccio vedere il codice sono piu chiaro


    for ($i = 0 ; $i < count($var_Articolo); $i++)
    {
    if ( $var_Articolo[$i] != $articolo )
    {
    $tmp_articolo[] = $var_Articolo[$i];
    $tmp_quantita[] = $var_QuantitaMP[$i];
    }

    }

    Io volevo CANCELLARE dall'array l'elemento UGUALE a quello di articolo. In questo modo copio tutto l'array in altro array solo quando NON trovo l'articolo uguale. Cosi va
    TORTA DI RISO .. F I N I T A !!

    Da M.C.S.A. a impiegato pubblico :-(

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    267
    sisi come avevo pensato,ma speravo ci fosse una funzione che cancellava e faceva shiftare automaticament ele key dell'array
    vabè pazienza adrò giù di function!

    grazie 1000

  7. #7
    Originariamente inviato da ivy_76
    la parte IN INGLESE che ti hanno segnalato l'ho provata anche io. Pero ho notato che quando fai UNSET lui distrugge l'indice relativo e anche se vai array_merge perdi un elemento che NON avevi cancellato. Io ho risolto in un'altra maniera. Scandisco l'array e copio il suo contenuto cella per cella in un secondo array e quando trovo l'elemento che non mi serve, semplicemente lo escludo dalla copia. Forse se ti faccio vedere il codice sono piu chiaro
    non capisco cosa intendi con perdi un elemento che non avevi cancellato...cosa intendi dire?

    con unset ti elimina la variabile che ha l'indice indicato nella variabile $item, fai attenzione che la funzione che ho postato io non va a cercare l'elemento nell'array e cancella il recordset con quel valore, ma va a cercare l'elemento nella posizione indicata dalla variabile $item

    con questo codice:
    codice:
    <?php
    function my_array_delete($array, $item) {
       if (isset($array[$item]))
           unset($array[$item]);
       return array_merge($array);
    }
    
    
    $input = array("a", "b", "c", "d", "e");
    print_r($input);
    
    $input = my_array_delete($input, 2);
    print_r($input);
    ?>

    otterrai:

    Array ( [0] => a [1] => b [2] => c [3] => d [4] => e )
    Array ( [0] => a [1] => b [2] => d [3] => e )
    come è giusto che sia

    se non vuoi che le chiavi ripartano da 0 basta togliere l'array_merge e lasciare solo return $array
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

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.