Foros del Web » Programando para Internet » PHP »

Comparar resultados obtenidos de 2 o mas archivos

Estas en el tema de Comparar resultados obtenidos de 2 o mas archivos en el foro de PHP en Foros del Web. Hola,me preguntaba como podria hacerse una comparacion despues de hacer la lectura a 2 o mas archivos txt, ambos archivos los leo y les extraigo ...
  #1 (permalink)  
Antiguo 29/09/2011, 09:05
 
Fecha de Ingreso: septiembre-2011
Ubicación: En donde pueda
Mensajes: 5
Antigüedad: 12 años, 6 meses
Puntos: 1
Comparar resultados obtenidos de 2 o mas archivos

Hola,me preguntaba como podria hacerse una comparacion despues de hacer la lectura a 2 o mas archivos txt, ambos archivos los leo y les extraigo la informacion necesaria que seria el nombre y una cantidad de la siguiente manera

Código:
$filas=file('archivo1.txt');
	$i=0;
	$numero_fila=0;
	
while($filas[$i]!=NULL){
	$row = $filas[$i+1]; 
	$rownom = substr($row, 4, 13);
	$rowcan = substr($row, 17, 28);
	$cadena = $rowx.','.$rowy.','.$rowzt;
	$rowfinal = explode(",",$cadena);
        $i++;
Esto extraeria estos resultados del archivo:
Código HTML:
Juan        22.00
Pedro      45.5
Adriana   98.33
Pero ahora lo que necesito es hacer una comparacion entre ambos resultados de cada archivo, si al revisar el segundo archivo un nombre se encuentra en la primera busqueda, necesitaria sumar la cantidad, cual seria la mejor manera de hacer esto, no conozco muy bien como seria, pero creo que es necesario agregarlo a un arreglo o algo asi, gracias

Última edición por Javo00; 29/09/2011 a las 09:49 Razón: cambio de titulo a uno mas exacto
  #2 (permalink)  
Antiguo 29/09/2011, 11:12
 
Fecha de Ingreso: septiembre-2011
Ubicación: En donde pueda
Mensajes: 5
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Comparar resultados obtenidos de 2 o mas archivos

Encontre una forma pero creo ke no es la correcta, primero se guardan los resultados de busqueda de un archivo en un arreglo
Código PHP:
    foreach ($filas as $a1) {
        
$row explode(','$a1);
        
$arr[$row[0]] = $row[1]; //Agregamos los datos a un array nuevo
    

Y despues en la busqueda en el segundo archivo, se compara y se guardan los valores
Código PHP:
        $row explode(','$a2);
        if (
array_key_exists($row[0], $arr)) { //Comprobamos si ya existe el nombre
            
$arr[$row[0]] = $row[1] + $arr[$row[0]]; //Sumamos
        
} else {
            
$arr[$row[0]] = $row[1]; //sino existe lo agregamos tal y como está.
    

Pero no funciona como dice ahi, la funcion array_key_exists lei que solo devuelve un valor TRUE, pero en este ejemplom no guarda el valor que necesito en el arreglo, cual podria ser la manera de guardar este valor en el nuevo arreglo. pero solo donde el valor de la primera busqueda (el nombre) sea igual al de la segunda para poder sumarle la cantidad de esa segunda busqueda
  #3 (permalink)  
Antiguo 29/09/2011, 12:11
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Comparar resultados obtenidos de 2 o mas archivos

Puedes hacer algo así... Es sólo una idea, simplifica esto como quieras:

Código PHP:
Ver original
  1. <?php
  2. $arc1 = file('archivo1.txt');
  3. $arc2 = file('archivo2.txt');
  4. $totales = array();
  5.  
  6. foreach ($arc1 as $p) {
  7.    $r = explode('|', $p);
  8.    $totales[$r[0]] = $r[1];
  9. }
  10.  
  11. foreach ($arc2 as $p) {
  12.     $r = explode('|', $p);
  13.     if (array_key_exists($r[0], $totales)) {
  14.         $totales[$r[0]] = $r[1] + $totales[$r[0]];
  15.     } else {
  16.         $totales[$r[0]] = $r[1];
  17.     }
  18. }
  19.  
  20. echo '<pre>';
  21. print_r($totales);
  22. echo '</pre>';

o si lo prefieres hacer así:

Código PHP:
Ver original
  1. <?php
  2. $arc1 = file('archivo1.txt');
  3. $arc2 = file('archivo2.txt');
  4. $datos = array_merge($arc1, $arc2);
  5. $resultado = array();
  6.  
  7. foreach ($datos as $p) {
  8.     $r = explode('|', $p);
  9.     if (array_key_exists($r[0], $resultado)) {
  10.         $resultado[$r[0]] = $r[1] + $resultado[$r[0]];
  11.     } else {
  12.         $resultado[$r[0]] = $r[1];
  13.     }
  14. }
  15.  
  16. echo '<pre>';
  17. print_r($resultado);
  18. echo '</pre>';

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 29/09/2011 a las 13:46

Etiquetas: .txt, comparar_2_archivos
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 14:30.