Foros del Web » Programando para Internet » PHP »

Problema con valor de array vacio

Estas en el tema de Problema con valor de array vacio en el foro de PHP en Foros del Web. Hola a todos...! Quiero modificar lineas de un archivo .txt, que es algo así: Código: texto|texto|texto|texto|texto|texto| texto|texto|texto||texto|texto| texto|texto|texto||texto|texto| ... y lo intento de esta forma: ...
  #1 (permalink)  
Antiguo 26/03/2019, 10:45
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 20 años, 1 mes
Puntos: 3
Problema con valor de array vacio

Hola a todos...!

Quiero modificar lineas de un archivo .txt, que es algo así:

Código:
texto|texto|texto|texto|texto|texto|
texto|texto|texto||texto|texto|
texto|texto|texto||texto|texto|
... y lo intento de esta forma:

Código PHP:
$fop fopen("archivo.txt","r");
while(
$linea fgets($fop)) {
    
$campo explode("|"$linea); //Identificamos los campos
    
$posicion $campo[3];//Campo a modificar
    
$replace $posicion.'/'//Reemplazamos por esto
    
$resultado str_replace($posicion$replace$linea); //Ejecutamos el "str_replace"
    
echo $resultado//Imprimimos el resultado

Es decir, repito lo escrito en el campo, y le agrego una barra inclinada. Si está todo bien, reescribo el archivo.txt

Con lo anterior me da este resultado:

Código:
texto|texto|texto|texto/|texto|texto|
texto|texto|texto||texto|texto|
texto|texto|texto||texto|texto|
Acá me aparece el problema, que si el array tiene un valor vacio, el explode() da FALSE... tal cual lo dice el manual "Si delimiter es un string vacío (""), explode() devolverá FALSE.", por lo tanto no me coloca la barra inclinada.

Por favor ¿cómo puedo hacer para poner, igualmente, la barra inclina en "$campo[3]" aunque tenga un valor FALSO?

He buscado, y he visto que los valores vacíos en un array se pueden eliminar... pero no he visto que se puedan "rellenar" por decirlo de alguna foma.

Ojalá puedan orientarme u ayudarme!!!
  #2 (permalink)  
Antiguo 26/03/2019, 16:01
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Problema con valor de array vacio

En este ejemplo, explode() no te devuelve falso, en todo caso, deberías analizar si $campo[3 ] tiene un valor vacío, pero en tu código puede haber errores si se repite el contenido en otra posición. Creo que es mejor modificar el campo y unir todo nuevamente con implode():

Código PHP:
Ver original
  1. $fop = fopen("archivo.txt","r");
  2. while($linea = fgets($fop)) {
  3.     $campo = explode("|", $linea); //Identificamos los campos
  4.     $campo[3] .= '/';  // Agregas la diagonal
  5.     echo implode('|', $campo); //Imprimimos el resultado volviendo a unir con el caracter original
  6. }
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 27/03/2019, 06:56
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 20 años, 1 mes
Puntos: 3
Respuesta: Problema con valor de array vacio

Hola Triby, muchas gracias por ayudarme...!!!

Sí efectivamente... he probado tu sugerencia y es mucho más sencilla y limpia. No se por qué no se me ocurrió usar "implode()", aunque es verdad que no manejo bien algunas funciones.

Es correcto lo que dices, $campo[3] tiene un valor vacío. En definitiva, confirmo que es mejor (en este caso) modificar el campo, y unir todo nuevamente con implode().

Nuevamente muchísimas gracias!!!

Saludos!

Etiquetas: vacio, valor
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 03:30.