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
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
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.
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
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!
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 :-(
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![]()
non capisco cosa intendi con perdi un elemento che non avevi cancellato...cosa intendi dire?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![]()
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:
come è giusto che siaArray ( [0] => a [1] => b [2] => c [3] => d [4] => e )
Array ( [0] => a [1] => b [2] => d [3] => e )![]()
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