2010-01-30 12 views

Respuesta

11

http://us3.php.net/array_filter

PHP 5.3 ejemplo para eliminar "foo" de matriz $ a:

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

El segundo parámetro puede ser cualquier tipo de PHP de devolución de llamada (por ejemplo, el nombre de la función como una cadena). También podría usar una función que genere función si el valor de búsqueda no es constante.

+0

Muy bien, no estaba familiarizado con array_fliter – Erik

3

Debería poder hacer eso con una combinación de array_search() y array_splice().

no probado, pero debería funcionar para matrices que contienen el valor sólo una vez:

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

Y lo que hace este código hacer si la matriz no contiene ningún fresas? –

+0

Buen punto, gracias. Modificó el código para verificar eso. –

+0

y ¿qué ocurre si las fresas se encuentran en la matriz de entrada dos veces? –

0

Si la matriz tiene valores únicos, puede darles la vuelta con 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'); 

editar: para más información: http://www.php.net/array_diff

2

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

Explicación clave

  1. Búsqueda por su valor: $key = array_search('value', $array);
  2. Quitar elemento de la matriz por su clave: unset($array[$key]);
Cuestiones relacionadas