Foros del Web » Programando para Internet » PHP »

Busqueda en un Array de Arrays ... como?

Estas en el tema de Busqueda en un Array de Arrays ... como? en el foro de PHP en Foros del Web. Holas gente! tengo un problemita Tengo el siguiente Array de arrays Código: Array ( [0] => Array ( [a] => 1 [b] => A [c] ...
  #1 (permalink)  
Antiguo 11/04/2010, 03:41
 
Fecha de Ingreso: enero-2007
Mensajes: 63
Antigüedad: 17 años, 10 meses
Puntos: 2
Pregunta Busqueda en un Array de Arrays ... como?

Holas gente! tengo un problemita Tengo el siguiente Array de arrays

Código:
Array ( 
[0] => Array ( [a] => 1 [b] => A [c] => B ) 
[1] => Array ( [a] => 2 [b] => B [c] => B ) 
[2] => Array ( [a] => 3 [b] => C [c] => D ) 
[3] => Array ( [a] => 4 [b] => A [c] => F ) 
...
 )
Este array va a seguir creciendo conforme le meta mas items

La pregunta es:

Quiciera buscar en toda la columna [a] quien tiene un cierto valor (por ejem 3)
y una vez q lo encuentre cambiar el valor de la columna [c] (por ejem con X) de la misma fila dnd el valor a sido encontrado

Qdando el Array de arrays asi

Código:
Array ( 
[0] => Array ( [a] => 1 [b] => A [c] => B ) 
[1] => Array ( [a] => 2 [b] => B [c] => B ) 
[2] => Array ( [a] => 3 [b] => C [c] => X ) 
[3] => Array ( [a] => 4 [b] => A [c] => F ) 
...
 )
Si no se encuentra el valor pedido en la columna [a], entonces retornara un mensajes de 'no se encontro'


Gracias por todo
  #2 (permalink)  
Antiguo 11/04/2010, 08:43
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 21 años
Puntos: 89
Respuesta: Busqueda en un Array de Arrays ... como?

Solo debes tener clara la profundidad del arreglo :

Queremos acceder a cada a de todos los arreglos, entonces sería :

Código PHP:
Ver original
  1. echo $nombreArreglo[0]['a']; // Imprime 1
  2. echo $nombreArreglo[1]['a']; // Imprime 2
  3. echo $nombreArreglo[2]['a']; // Imprime 3
  4. echo $nombreArreglo[3]['a']; // Imprime 4

Al recorrer el arreglo, usas la típica $i como índice para acceder al valor de c, para así modificar su valor.

La verdad es más fácil de lo que crees.... inténtalo, y si ya crees que no puedes a pesar de todo lo intentado, te ayudamos con código.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 11/04/2010, 09:53
 
Fecha de Ingreso: enero-2007
Mensajes: 63
Antigüedad: 17 años, 10 meses
Puntos: 2
Respuesta: Busqueda en un Array de Arrays ... como?

entonces la funcion seria mas o menos asi??


Código:
public function buscarReemplazar($array,$buscado,$reemplazo)
{
   for($i=0;$i<count($array);$i++)
   {
      if($array[$i]['a']==$buscado)
      {
          $array[$i]['c']=$reemplazo;
      }
   }
}
La parte del reemplazo estara bien?? ... o tal vez con una funcion de php especial para esto...

gracias por todo
  #4 (permalink)  
Antiguo 11/04/2010, 10:37
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 21 años
Puntos: 89
Respuesta: Busqueda en un Array de Arrays ... como?

El código que tienes debería estar bien. El reemplazo se ve bien también. ¿Lo probaste? No debería causarte error alguno. Solo te recomendaría que el count() lo pongas fuera del for, para así mejorar el rendimiendo del script, ya que si tienes cientos de miles de valores en tu arreglo, sería mejor hacer lo siguiente :

Código PHP:
Ver original
  1. public function buscarReemplazar($array,$buscado,$reemplazo)
  2. {
  3.    $count = count($array);
  4.    for($i=0;$i<$count;$i++)
  5.    {
  6.       if($array[$i]['a']==$buscado)
  7.       {
  8.           $array[$i]['c']=$reemplazo;
  9.       }
  10.    }
  11. }

Si notas, la diferencia es mínima, pero podría ser bastante en caso de tener muchos valores.

Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 13/04/2010, 22:58
 
Fecha de Ingreso: enero-2007
Mensajes: 63
Antigüedad: 17 años, 10 meses
Puntos: 2
Respuesta: Busqueda en un Array de Arrays ... como?

Ya lo probe y si funciono ;)

Pero se me vino otra duda .. Como puedo hacer para q en vez de reemplazar un valor en cierta columna ...ahora me elimine toda la fila segun el valor buscado q le de de la primera columna??

Es decir si

$array[$i]['a']==$buscado entonces eliminar toda esa fila


Gracias por todo
  #6 (permalink)  
Antiguo 14/04/2010, 00:52
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Respuesta: Busqueda en un Array de Arrays ... como?

en vez de
Código PHP:
  $array[$i]['c']=$reemplazo
Puedes poner
Código PHP:
  unset($array[$i]); 
  #7 (permalink)  
Antiguo 14/04/2010, 12:21
 
Fecha de Ingreso: enero-2007
Mensajes: 63
Antigüedad: 17 años, 10 meses
Puntos: 2
Respuesta: Busqueda en un Array de Arrays ... como?

Cita:
Iniciado por Eleazan Ver Mensaje
en vez de
Código PHP:
  $array[$i]['c']=$reemplazo
Puedes poner
Código PHP:
  unset($array[$i]); 
Muchas gracias el unset funciono de maravilla y como dato :

para 'reindexar' el array despues de eliminar una fila

Código:
unset($array[$i]);
$array=array_values($array);
Gracias por todo

Etiquetas: arrays, busquedas
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:21.