Foros del Web » Programando para Internet » PHP »

comparar linea de un fichero de texto

Estas en el tema de comparar linea de un fichero de texto en el foro de PHP en Foros del Web. Hola compañeros como podría comparar lineas de un fichero de texto? Código PHP: $filas  =  array_unique ( file ( "precios.txt" ));      if(  $filas  ==  false  ...
  #1 (permalink)  
Antiguo 12/02/2020, 11:05
 
Fecha de Ingreso: noviembre-2012
Mensajes: 69
Antigüedad: 7 años, 3 meses
Puntos: 0
comparar linea de un fichero de texto

Hola compañeros como podría comparar lineas de un fichero de texto?

Código PHP:
$filas array_unique(file("precios.txt")); 

    if( 
$filas == false ) {
      echo 
"Error al abrir el archivo";
    }
    else
{
foreach (
$filas as $value) {

    list(
$id) = explode(";"$value);

    echo 
'Id: '.$id.'<br/>';
    
    echo 
"<hr>"
Quisiera que comparese la linea anterior y si esta repetida no hiciera nada, pero que si no lo está lo grabe en una tabla.
Ejemplo.
fichero de txt:

12;
12;
13;
13;
14;
15;

Resultado

12;
13;
14;
15;

Que las repetidas las omita.


¿alguna ayuda?
Gracias
  #2 (permalink)  
Antiguo 12/02/2020, 11:39
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.621
Antigüedad: 12 años
Puntos: 1104
Respuesta: comparar linea de un fichero de texto

Opcion 1 - agrega una variable que almacene el valor previo para que lo puedas comparar

Código PHP:
Ver original
  1. <?
  2.  
  3. $filas = array_unique(file("precios.txt"));
  4.  
  5.     if( $filas == false ) {
  6.       echo "Error al abrir el archivo";
  7.     }
  8.     else
  9. {
  10.  
  11. $lastItem = '';
  12. foreach ($filas as $value) {
  13.     if($value === $lastItem) continue;
  14.    
  15.     list($id) = explode(";", $value);
  16.     echo 'Id: '.$id.'<br/>';
  17.     echo "<hr>";  
  18.    
  19.     $lastItem = $value;
  20. }

Opcion 2 - array_values formara un array numerico que no admite duplidos, en caso de haberlos se sobre escriben y al final solo conservas 1

Código PHP:
Ver original
  1. <?
  2.  
  3. $filas = array_unique(file("precios.txt"));
  4.  
  5.     if( $filas == false ) {
  6.       echo "Error al abrir el archivo";
  7.     }
  8.     else
  9. {
  10. $filas = array_values($filas);
  11. foreach ($filas as $value) {
  12.    
  13.     list($id) = explode(";", $value);
  14.     echo 'Id: '.$id.'<br/>';
  15.     echo "<hr>";  
  16.    
  17. }
  #3 (permalink)  
Antiguo 12/02/2020, 20:42
 
Fecha de Ingreso: abril-2006
Mensajes: 345
Antigüedad: 13 años, 10 meses
Puntos: 69
Respuesta: comparar linea de un fichero de texto

la idea siempre es la misma, recorrer el array y por cada elemento, filtrar segun algun criterio

Código PHP:

<?php
//$filas = array("13;232","44.5;asda","12321;23","13;sss","44.55;ccc");
$filas file("precios.txt");
$resultado=array();
if(!
is_array($filas)){
    die(
'la variable $filas no es un array');
}

array_walk($filas,
           function(
$valor)use(&$resultado){
                list(
$id,$v) = explode';'$valor,2);
               
$resultado[$id]=$v;
           });
echo 
"<pre>";
var_dump($resultado);
echo 
"</pre>";
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #4 (permalink)  
Antiguo 13/02/2020, 01:40
 
Fecha de Ingreso: noviembre-2012
Mensajes: 69
Antigüedad: 7 años, 3 meses
Puntos: 0
Respuesta: comparar linea de un fichero de texto

Muchas gracias.

Ahora mi problema es que las lineas son así

"123456";"545";"SI"
"123456";"546";"NO"
"123456";"547";"SI"
"151516";"545";"SI"
"151516";"547";"NO"

Como ves lo que se repite sólo es la primera columna, puedo hacer algo?, me refiero a que el resultado fuese solo la 1ª columna sin repetir nada

"123456"
"151516"

Gracias por tu ayuda
  #5 (permalink)  
Antiguo 14/02/2020, 06:07
Avatar de baldaweb  
Fecha de Ingreso: septiembre-2010
Ubicación: Barco pirata
Mensajes: 244
Antigüedad: 9 años, 5 meses
Puntos: 20
Respuesta: comparar linea de un fichero de texto

Guardar los valores en un array, y hacer un array_unique
__________________
CHOOO COOO LAAA TEEEEEEEEE
  #6 (permalink)  
Antiguo 14/02/2020, 08:53
 
Fecha de Ingreso: abril-2006
Mensajes: 345
Antigüedad: 13 años, 10 meses
Puntos: 69
Respuesta: comparar linea de un fichero de texto

Cita:
Iniciado por quieropaginaweb Ver Mensaje
Muchas gracias.

Ahora mi problema es que las lineas son así

"123456";"545";"SI"
"123456";"546";"NO"
"123456";"547";"SI"
"151516";"545";"SI"
"151516";"547";"NO"

Como ves lo que se repite sólo es la primera columna, puedo hacer algo?, me refiero a que el resultado fuese solo la 1ª columna sin repetir nada

"123456"
"151516"

Gracias por tu ayuda
solo extrae las "KEYS" del ejemplo

Código PHP:
<?php
//$filas = array("13;232","44.5;asda","12321;23","13;sss","44.55;ccc");
$filas file("precios.txt");
$resultado=array();
if(!
is_array($filas)){
    die(
'la variable $filas no es un array');
}

array_walk($filas,
           function(
$valor)use(&$resultado){
                list(
$id,$v) = explode';'$valor,2);
               
$resultado[$id]=$v;
           });
echo 
"<pre>";
var_dump($resultado);
var_dump(array_keys($resultado));
echo 
"</pre>";

y si quieres quitar lo dobleComilla

reemplaza
Código PHP:
$resultado[$id]=$v
por
Código PHP:
$resultado[$id]=trim($v,'"'); 
te sugiero darte una vuelta por la web oficial de PHP su documentacion es de las mas sencillas de comprender y en los camentarios que dejan usuarios veras cosas interesantes

http://es.php.net

si tienes dudas de alguna funcion tienes tu navegador

http://es.php.net/FUNCION_DE_PHP

como ejemplo

http://es.php.net/trim
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9

Última edición por tuadmin; 14/02/2020 a las 08:54 Razón: agregar ejemplos de php URL
  #7 (permalink)  
Antiguo 18/02/2020, 16:55
 
Fecha de Ingreso: noviembre-2012
Mensajes: 69
Antigüedad: 7 años, 3 meses
Puntos: 0
Respuesta: comparar linea de un fichero de texto

Muchisimas gracias, solo una pequeña duda, si ahora este array quisiera guardarlo en una tabla, como lo haría?

Muchas gracias.



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