Newsgroup: it.comp.www.php
Titolo: eliminare elemento metodo più veloce

salve,
ho un array associativo ogni elemento un record del db
io vorrei eliminare il record x (x = ad un valore )
quale č il metodo piů veloce  ?
sto frugando fra le varie funzioni che usano gli array ma ma non ho trovato 
niente...
ancora...
grazie ciao

 quale č il metodo piů veloce  ?
prova pop()
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

ancora...
http://www.php.net/manual/it/function.unset.php
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Dev.Staff di E-Xoopport - 
http://dev.e-xoopport.it


si ma devo eliminare un particolare elemento partendo da un array
associativo
... capisci  ?

 ... capisci  ?
unset va più che bene...
Non conosco la struttura del tuo array associativo, ma se lo estrai in
questo formato:
while($dati = mysql_fetch_assoc($DatiQuery)) {
	$array[] = $dati;
}
Ti ritrovi ogni ogni record contenuto in un array numerico. Per capirci
$array[0] contiene per intero il primo record, $array[1] il secondo e
così via.
A questo punto puoi cancellare l'intero record x facendo un semplice:
unset($array[x]);
Ciao
Gianni

ecco il problema e che io non posso fare unset($array[x]);  perchè io
devo cancellare
l'array che ha come valore interno (per interno intendo un valore
interno all'array associativo caricato cmq secondo il tuo metodo)
qualcosa tipo
"delete from .. where nome="antonio" e
non 
"delete from .. where id=x 
spero di essermi spiegato

spero di essermi spiegato
Facci un esempio piů concreto....un esempio di array e con l'elemetno
che vuoi cancellare.


Dunque
immagine un array così
Array
(
    [0] => Array
        (
            [num] => 22
            [id_articolo] => 2
        )
    [1] => Array
        (
            [num] => 2
            [id_articolo] => 20
        )
    [2] => Array
        (
            [num] => 26
            [id_articolo] => 1
        )
ecco io voglio cancellare l'elemento con id_Articolo = 20
ad esempio.
    [3] => Array
        (
            [num] => 8
            [id_articolo] => 18
            [fk_idcategoria] => 108
        )
)

l'ultima parte non c'entra una errore di "incollatura"

 ad esempio.
Se oltre id_articolo, conosci anche il num, dovresti poterlo fare con
qualcosa di simile:
unset($Array[array_search(Array ('num' => '2', 'id_articolo' => '20'),
$Array)]);
In alternativa puoi fare un in_array per verificare che ciò che cerchi
ci sia (se non c'è eviti di scorrere l'array), poi scorrere l'array più
esterno con un for (o un qualsiasi altro ciclo) che va da $i = 0 al
numero massimo di elementi. fai la ricerca nell'array interno e quando
lo trovi fai l'unset dell'elemento $i ed esci dal ciclo for.
In questo modo NON scorri l'intero array, a meno che l'elemento da
cancellare non si trovi in fondo.
Metodologie più dirette io non ne conosco, però unendo varie funzioni
non escludo che si possa fare
Ciao
Gianni

 ad esempio.
dunque č un problema relativo alla ricerca dell'elemento da cancellare 
piuttosto che relativo alla cancellazione in se ?
in linea generale devi scorrere l'array se non ci sono ulteriori assunzioni.
Perň se cancelli sempre in base allo stesso "campo" allora puoi pensare 
a costruire in "parallelo" un array di appoggio la cui chiave sia il 
valore da eliminare e il cui valore sia l'elemento da eliminare.
ciao
Alesi_27


io ho usato array_walk e create_function ma non so come eliminare
l'elemento trovato

         )
E' un array bidimensionale, questo complica un poco.
Con un paio di foreach è abbastanza semplice, probabilmente puoi  
riadattare l'esempio usando array walk.
foreach ( $array as $key=>$record ){
	if ( $record['id_articolo'] == 20 ){
		unset ($array[$key]);
	}
}
Non sono sicuro che sia questa la soluzione che cercavi, mi pare troppo  
semplice considerando gli sbattimenti che stai facendo.
Ciao
Tac
-- 
La netiquette prevede sign di al massimo quattro righe.
Purtroppo la mia sign in quattro righe non ci stà.