Foros del Web » Programando para Internet » PHP »

Buscar en un Array con Array_search

Estas en el tema de Buscar en un Array con Array_search en el foro de PHP en Foros del Web. Hola a todos, Estoy tratando de usar array_search para buscar coincidencias dentro de el siguiente array: Array ( [0] => Dato-1 [1] => Dato-2 [2] ...
  #1 (permalink)  
Antiguo 19/04/2011, 05:27
 
Fecha de Ingreso: noviembre-2010
Ubicación: Badajoz
Mensajes: 94
Antigüedad: 14 años
Puntos: 4
Buscar en un Array con Array_search

Hola a todos,
Estoy tratando de usar array_search para buscar coincidencias dentro de el siguiente array:

Array ( [0] => Dato-1 [1] => Dato-2 [2] => Dato-3 [3] => Dato-4 [4] => Dato-5 [5] => Dato-6 )


Con un array_search("Dato-3", $cadena); me devuelve 2, hasta aquí, bien.

Necesito que en algunos casos me devuelva el mismo resultado si buscara "-3" en lugar de "Dato-3", osea que no se llegue a completar la palabra completa y me devuelva la posición de dicha palabra o número.

He probado con array_search("o-3", $cadena); pero devuelve un valor vacío obviamente, ¿cómo puedo hacer que busque cualquier coincidencia sin importar si coincide al 100%?

Espero haberme explicado bien y gracias por vuestra ayuda.
  #2 (permalink)  
Antiguo 19/04/2011, 06:39
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Buscar en un Array con Array_search

Que tal crash1912,

array_search no te va a servir, porque no simplemente iteras sobre el array y guardas en un nuevo array las coincidencias ?, algo así:

Código PHP:
Ver original
  1. $data   = array('dato-1', 'dato-2', 'dato-3', 'dato-4');
  2. $regex  = '/-1$/';
  3.  
  4. $result = array();
  5. foreach($data as $k => $v) {
  6.     if(preg_match($regex, $v)){
  7.         $result[] = $v;
  8.     }
  9. }
  10.  
  11. print_r($result);

o si dispones de PHP 5.3+ podes utilizar closures:

Código PHP:
Ver original
  1. $data   = array('dato-1', 'dato-2', 'dato-3', 'dato-4');
  2. $regex = '/-1$/';
  3.  
  4. $result = array_filter($data, function ($v) use ($regex) {
  5.     return preg_match($regex, $v);
  6. });
  7.  
  8. print_r($result);

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 19/04/2011, 07:21
 
Fecha de Ingreso: noviembre-2010
Ubicación: Badajoz
Mensajes: 94
Antigüedad: 14 años
Puntos: 4
Respuesta: Buscar en un Array con Array_search

Muchas gracias por tu ayuda masterpuppet, tu solución no me servía tal cual porque necesitaba conservar el array principal intacto, pero usando tu primera solución al obtener la cadena completa, la almaceno en una variable y ya puedo usar array_search(), me ha solucionado todo, muchas gracias!

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:13.