2010-01-30 19 views

Odpowiedz

11

http://us3.php.net/array_filter

PHP 5,3 przykład w celu usunięcia "foo" z tablicy $ a:

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

Drugim parametrem może być dowolnego rodzaju PHP zwrotnego (na przykład, nazwę funkcji jako ciąg). Można również użyć funkcji generującej funkcję, jeśli wartość wyszukiwania nie jest stała.

+0

Bardzo ładnie, nie był zaznajomiony z array_fliter – Erik

3

Powinieneś być w stanie to zrobić z kombinacją array_search() i array_splice().

Nietestowane, ale powinien działać na tablic, które zawierają wartość tylko jeden raz:

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

i co robi ten kod jeśli tablica nie zawiera żadnych truskawki? –

+0

Dobra uwaga, dzięki. Zmodyfikowano kod, aby to sprawdzić. –

+0

i co, jeśli truskawki są w macierzy wejściowej dwa razy? –

0

Jeśli tablica ma unikalne wartości, można je obracać o 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'); 

edycja: aby uzyskać więcej informacji: http://www.php.net/array_diff

2

Krótka odpowiedź unset($array[array_search('value', $array)]);

Wyjaśnienie klucz

  1. Wyszukiwanie przez jego wartość: $key = array_search('value', $array);
  2. remove elementu tablicy przez jego klucza: unset($array[$key]);
Powiązane problemy