2011-07-01 6 views
5

tengo una matriz que tiene este aspecto:elementos eliminación de una matriz cuyo valor coincide con una cadena especificada

 
Array ([0] => Vice President [1] => [2] => other [3] => Treasurer) 

y quiero borrar el valor con other en el valor.

Intento usar array_filter para filtrar esta palabra, pero array_filter eliminará también todos los valores vacíos.

Quiero que el resultado sea así:

 
Array ([0] => Vice President [1] => [2] => Treasurer) 

Este es mi código de PHP filtro:

function filter($element) { 
    $bad_words = array('other'); 

    list($name, $extension) = explode(".", $element); 
    if(in_array($name, $bad_words)) 
    return; 

    return $element; 
} 

$sport_level_new_arr = array_filter($sport_level_name_arr, "filter"); 

$sport_level_new_arr = array_values($sport_level_new_arr); 

$sport_level_name = serialize($sport_level_new_arr); 

¿Puedo utilizar otro método para filtrar esta palabra?

Respuesta

3
foreach($sport_level_name_arr as $key => $value) { 

    if(in_array($value, $bad_words)) { 
    unset($sport_level_name_arr[$key]) 
    } 

} 
+0

Esto no renumera la matriz como el OP deseado. – EdoDodo

+0

Muchas gracias ... su script seguro de mí ... gracias – wyman

+0

Hey EdoDodo sólo necesitan utilizar la función de PHP "array_values", – wyman

3

array_filter() es la función correcta. Asegúrese de que su función de devolución de llamada tenga la lógica correcta.

intente lo siguiente:

function other_test($var) { 
    // returns whether the value is 'other' 
    return ($var != 'other'); 
} 

$new_arr = array_filter($arr, 'other_test'); 

Nota: si desea indexar la matriz, entonces se podría llamar $new_arr = array_values($new_arr); después de la anterior.

2

Esto creará dos matrices y encontrará la diferencia. En la segunda matriz vamos a poner los elementos de excluir:

array_values(array_diff($arr,array("other"))); 
+0

Código bonito. ¿Qué hace? –

+0

creará dos matrices y encontrará la diferencia, en la segunda matriz pondremos los elementos para excluir – Sreeraj

+0

Gracias por la edición, Phoenix – Sreeraj

0

Si la función de devolución de llamada devuelve verdadero, el valor actual de la entrada se devuelve en la matriz resultado. PHP Manual

Así que hay que hacer return true; en su función en lugar de return $element;filter(); para asegurarse de que no hay valores vacíos se eliminan.

Cuestiones relacionadas