2010-01-30 17 views

Antwort

11

http://us3.php.net/array_filter

PHP 5.3 Beispiel "foo" von Array zu entfernen $ a:

<?php 
$a = array("foo", "bar"); 
$a = array_filter($a, function($v) { return $v != "foo"; }); 
?> 

Der zweite Parameter jede Art von PHP Rückruf sein kann (beispielsweise Name Funktion als eine Zeichenfolge). Sie können auch eine Funktionsgenerierungsfunktion verwenden, wenn der Suchwert nicht konstant ist.

+0

Sehr schön, war nicht vertraut mit array_fliter – Erik

3

Sie sollten das mit einer Kombination von array_search() und array_splice() tun können.

Ungeprüfte, sollte aber für Arrays arbeiten, die den Wert nur einmal enthalten:

$array = array("Apples", "strawberries", "pears"); 
$searchpos = array_search("strawberries", $array); 
if ($searchpos !== FALSE) { 
    array_splice($array, $searchpos, 1); 
} 
+0

Und was diesen Code tut tue, wenn das Array keine enthält Erdbeeren? –

+0

Guter Punkt, danke. Der Code wurde geändert, um dies zu überprüfen. –

+0

und was ist, wenn Erdbeeren zweimal im Eingabe-Array sind? –

0

Wenn Ihr Array eindeutige Werte hat, können Sie sie drehen mit array_flip

25

array_diff:

$array = array('a','b','c'); 
$array_to_remove = array('a'); 

$final_array = array_diff($array,$array_to_remove); 
// array('b','c'); 

bearbeiten: für weitere Informationen: http://www.php.net/array_diff

2

Kurzantwort unset($array[array_search('value', $array)]);

Erklärung

  1. Suche Schlüssel durch seinen Wert: $key = array_search('value', $array);
  2. entfernen Array-Element durch seinen Schlüssel: unset($array[$key]);
Verwandte Themen