Ver Mensaje Individual
  #6 (permalink)  
Antiguo 13/05/2014, 07:48
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: eliminar fila en un txt duplicado

Código PHP:
Ver original
  1. <?php
  2.  
  3. $f_users = 'usuarios.txt';
  4.  
  5. // leo el archivo, voy a simularlo:
  6.  
  7. // simulo archivo
  8. $file = <<<'FILE'
  9. jesus:3124:2015-06-03
  10. jovy1:5254:2015-06-03
  11. jovy2:6485:2015-06-03
  12. jesus:3124:2015-06-03
  13. jovy3:6592:2014-05-27
  14. FILE;
  15.  
  16. // simulo lectura por lineas del archivo
  17. $lineas = explode("\n",$file);
  18.  
  19. $users = array();
  20. foreach ($lineas as $linea)
  21. {
  22.     list($user,$pass,$date) = explode(':',$linea);
  23.     if (!in_array($user,$users))
  24.     {
  25.         $out[] = $linea;
  26.         $users[] = $user;
  27.     }
  28. }
  29.  
  30. // lo siento, me facilita la visualizacion :)
  31. function debug($arr){
  32.     print_r("<pre>");
  33.     print_r($arr);
  34.     print_r("</pre>");
  35. }
  36.  
  37. debug($out);
  38.  
  39. // vuelvo a escribir el archivo

El resultado es:

Cita:
Array
(
[0] => jesus:3124:2015-06-03
[1] => jovy1:5254:2015-06-03
[2] => jovy2:6485:2015-06-03
[3] => jovy3:6592:2014-05-27
)
----
Otra opcion es no generar un nuevo array sino borrar los elementos que no quieres ahi, consumiria menos memoria pero mas tiempo porque los desplazamientos en los arreglos son costosos :)

Código PHP:
Ver original
  1. <?php
  2.  
  3. $f_users = 'usuarios.txt';
  4.  
  5. // leo el archivo, voy a simularlo:
  6.  
  7. // simulo archivo
  8. $file = <<<'FILE'
  9. jesus:3124:2015-06-03
  10. jovy1:5254:2015-06-03
  11. jovy2:6485:2015-06-03
  12. jesus:3124:2015-06-03
  13. jovy3:6592:2014-05-27
  14. FILE;
  15.  
  16. // simulo lectura por lineas del archivo
  17. $lineas = explode("\n",$file);
  18.  
  19. $users = array();
  20. foreach ($lineas  as $ix => $linea)
  21. {
  22.     list($user,$pass,$date) = explode(':',$linea);
  23.     if (!in_array($user,$users))
  24.     {      
  25.         $users[] = $user;
  26.     }else
  27.         unset ($lineas[$ix]);
  28. }
  29.  
  30. // lo siento, me facilita la visualizacion :)
  31. function debug($arr){
  32.     print_r("<pre>");
  33.     print_r($arr);
  34.     print_r("</pre>");
  35. }
  36.  
  37. debug($lineas);
  38.  
  39. // vuelvo a escribir el archivo

Nota en la ultima version no creo el array $out sino uso unset() para eliminar elementos del array $lineas
__________________
Salu2!

Última edición por Italico76; 13/05/2014 a las 08:13