Mailinglisten-Archive |
Am Mittwoch, 28. April 2004 16:13 schrieb "Dr. Volker Göbbels": > Aloha, > > ><code> > >$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red'); > >if(in_array('blue', $array)) > >{ > > unset($array[array_search('blue', $array)]); // $key = 2; > >} > >print_r($array); > > > >/* Ausgabe: > >Array > >( > > [1] => red > > [2] => green > > [3] => red > >) > >*/ > ><code> > > Das geht auch performanter ;) > Der Value ist bekannt, aber das Array ist ja nach > Keys indiziert und nicht nach den Values. Lösung: > array_flip(): > > $tmp=array_flip($array); > if (array_key_exists('blue')) { > unset($tmp['blue']); > } > $array=array_flip($tmp); Und wenn manche Werte identisch sind, gehen diese Elemente verloren! Lösung: $a = array( 'eins' , 'zwei' , 'drei' ); $s = 'zwei'; // zu suchender Wert $k = array_keys( $a , $s ); // Arrayschlüssel von Elem., die den Wert $s haben foreach( $k as $key ) { $a[ $key ] = NULL; // *) unset( $a[ $key ] ); } *) Ich habe die Erfahrung gemacht, dass wenn der Wert eines Arrayelementes ein Array ist, dieser nicht ohne weiteres gelöscht werden kann. Deswegen erst mit NULL reinitialisieren und dann löschen. -- MfG Martin Rozmus martinrozmus at freenet.de
php::bar PHP Wiki - Listenarchive