2010-11-12 23 views
50

que tiene una matriz de esta manera:Caso insensible búsqueda variedad

$array = Array (0 => 'oooo', 
       1 => 'no', 
       2 => 'mmmm', 
       3 => 'yes'); 

me gustaría buscar una palabra "sí". Sé de array_search(), pero me gustaría hacer coincidir "sí", "sí" y "SÍ" también.

¿Cómo puedo hacer esto?

+7

0%? acepta algunas respuestas! – Galen

+2

9 preguntas no hay respuestas aceptadas. De ninguna manera. -1 por una mala pregunta escrita. Resalta el código y arregla las cadenas con el entorno ''. – Shoe

Respuesta

122
array_search(strtolower($search), array_map('strtolower', $array)); 
+0

wow, exactamente estoy buscando esto gracias – Gowri

+8

'array_map'' array_map' ' array_map' 'array_map' ... ¡tal vez ahora recordaré cuán útil es esta cosa! –

+1

Tenga en cuenta que array_map ('strtolower' ... no funciona con caracteres cirílicos! Probablemente con utf-8 como un todo, excepto los latinos. –

0

Edit: Lo siento, veo que es para los valores, consulte: http://php.net/manual/en/function.array-change-key-case.php#88648


Para claves:

$a = array('YES', 'yes', 'Yes'); 
$b = array_change_key_case($a, CASE_LOWER); 
$f = array_search(strtolower($search), $b); 
+0

He mencionado que sí, por ejemplo ... pero me gusta buscar cualquier palabra en el conjunto – Gowri

+0

@ Ashley: esto es bueno para un solo byte, ¿alguna sugerencia para bytes múltiples? – ajreal

+0

@gowri cambiar $ buscar lo que quieras buscar – Ashley

1

Se puede utilizar en lugar de in_array()array_search().

$response = in_array('yes', array_map('strtolower', $array)); 
+1

Nota: el comentario del usuario en el sitio web de PHP indica que 'in_array' podría dar resultados más predecibles haciendo una búsqueda" estricta "añadiendo' true' como tercer parámetro: '$ is_there = in_array ('yes', array_map ('strtolower', $ array), verdadero); '. – TechNyquist

Cuestiones relacionadas