Los números en mi archivo son 5X5:

13456
23789
14789
09678
45678

Estoy tratando de ponerlo en este formulario

array[0]{13456}
array[1]{23789}
array[2]{14789}
array[3]{09678}
array[4]{45678}

Mi código es:

$fileName = $_FILES['file']['tmp_name'];
  //Throw an error message if the file could not be open
  $file = fopen($fileName,"r") or exit("Unable to open file!");

  while ($line = fgets($file)) {
      $digits .= trim($line);
     $members = explode("\n", str_replace(array("\r\n","\n\r","\r"),"\n",$digits));
      echo $members;

El resultado que obtengo es este:

ArrayArrayArrayArrayArray
0
John 24 sep. 2019 a las 01:29

3 respuestas

La mejor respuesta

fgets obtiene una línea del puntero del archivo, por lo que teóricamente no debería haber caracteres "\r" o "\n" en $line. explode seguirá funcionando, incluso si no se encuentra el delimitador. Simplemente terminará con una matriz con un elemento, la cadena completa. Sin embargo, no puedes hacer eco de una matriz. (Es por eso que está viendo Array para cada línea; es lo mejor que PHP puede hacer cuando usa echo en una matriz).

Si yo fuera tú, preferiría usar file() en su lugar.

$members = array_map('trim', file($fileName, FILE_IGNORE_NEW_LINES));

Con el archivo de ejemplo que mostró, esto debería resultar en

$members = ['13456', '23789', '14789', '09678', '45678'];
0
Don't Panic 23 sep. 2019 a las 23:05

Simplemente puede poner las líneas en una matriz y usar print_r en lugar de echo para imprimir esa matriz

while ($line = fgets($file)) {
  $members[] = $line;
}
print_r($members);
0
sifat kabir 23 sep. 2019 a las 23:08

Debe depender del archivo con el que está tratando.

Tipo de archivo:

  • texto -> fgets ($ archivo)
  • CSV -> fgetcsv ($ archivo)
0
Mohan Bade 23 sep. 2019 a las 23:46