PHP читать построчно и извлекать данные

1

У меня есть список (data1.php), который содержит данные, как показано ниже:

06/26/2015,33.51718,-81.71856,0.0,4001,15:39:57,39256,1,0.0,13.6,
06/26/2015,33.51721,-81.71858,0.0,4001,15:40:57,39256,1,0.0,13.7,
06/26/2015,33.51720,-81.71860,0.0,4001,15:41:57,39256,1,0.0,13.6,
06/26/2015,33.51719,-81.71858,0.0,4001,15:42:58,39256,1,0.0,13.7,
06/26/2015,33.51720,-81.71860,0.0,4001,15:43:58,39256,1,0.0,13.6,

Я пытаюсь получить только 2-й и 3-й данные (lat и long). Файл с открытым исходным кодом имеет следующие результаты:

Lat:33.51718
Long:-81.71856
Lat:33.51720
Long:-81.71860
Lat:33.51720
Long:-81.71860

Он пропускает каждую другую линию. Вот мой код. Пожалуйста помоги.

<?php
    $fn = fopen("data1.php",'r') or die("fail to open file");
    $fp = fopen('output.php', 'w') or die('fail to open output file');
    while($row = fgets($fn)) {
      echo fgets($fn). "<br";
      $num = explode(",", $row);

      $lat = $num[1];
      $long =  $num[2];
       echo "<p>Lat: {$lat}</p>";
      echo "<p>Long: {$long}</p>";

      fwrite($fp, "Lat:$lat\n");
      fwrite($fp, "Long:$long\n");

    }
    fclose($fn);
    fclose($fp);
?>
Теги:

2 ответа

1

Ваша проблема здесь:

 while($row = fgets($fn)) {
echo fgets($fn). "<br";

Вы читаете 1 строку из файла, и сразу после этого вы читаете и повторяете другую строку, не обрабатывая ее. Удалите эхо, и вы должны быть в порядке

  • 0
    Чтобы получить еще больше удовольствия, переключите свои fgets и explode чтобы использовать php.net/manual/en/function.fgetcsv.php
  • 0
    Или echo "$row<br>";
Показать ещё 3 комментария
0

Попробуй это:

<?php
$fn = fopen("data1.php",'r') or die("fail to open file");

$fp = fopen('output.php', 'w') or die('fail to open output file');

$stop = "0";

while($row = fgets($fn)) {


$num = explode(",", $row);


$lat = $num[1];
$long =  $num[2];
if($stop == "1" or $stop == "2"){

echo "<p>Lat: {$lat}</p>";
echo "<p>Long: {$long}</p>";

fwrite($fp, "Lat:$lat\n");
fwrite($fp, "Long:$long\n");
}else{}

$stop++;
   }
fclose($fn);
fclose($fp);

  ?>
  • 0
    Спасибо, Мухаммед! Я ценю это!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню