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