phpbar.de logo

Mailinglisten-Archive

[php] Array - find-and-delete -> Erledigt

[php] Array - find-and-delete -> Erledigt

Martin Rozmus martinrozmus at freenet.de
Mit Apr 28 17:41:07 CEST 2004


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