逐行读取json文件

时间:2018-01-26 11:33:49

标签: php json

我想逐行读取test.txt文件,我把它转换为对象,但我的问题是它只是读取第1行而且有些错误,因为加载时间很短

$file = fopen(__DIR__.'/test.txt','r');
while (!feof($file)){
    $file = fgets($file);
    $obj = json_decode($file);
    echo $obj->sid;
    echo "<hr>";
}

这是我的test.txt:

 {"sid":5555,"trans-id":"PROV_149663920543900000801","status":"0","base-price-point":"0","msisdn":"989905978846","keyword":"sub1","validity":1}
 {"sid":2244,"trans-id":"PROV_149663920543900000801","status":"0","base-price-point":"0","msisdn":"989905978846","keyword":"sub1","validity":1}

4 个答案:

答案 0 :(得分:2)

您正在覆盖代码第3行的gem update --system。将其更改为$file,您就可以了。

$line

答案 1 :(得分:2)

试试这个:

<?php

  $filename= __DIR__.'/test.txt';
  $array = explode("\n", file_get_contents($filename));

  foreach ( $array as $line)
{
    $obj = json_decode($line);
    echo $obj->sid;
    echo "<hr>";
}
?>

答案 2 :(得分:-1)

使用file()功能:

$contents = file(__DIR__.'/test.txt');
foreach ($contents as $line)
{
    $obj = json_decode($line);
    echo $obj->sid;
    echo "<hr>";
}

file()函数读取文件并使用文件内容的每一行创建一个数组。

答案 3 :(得分:-2)

我建议使用file来读取文件,因为这会将各行生成为数组条目,因此您可以使用foreach

遍历每一行
$file=__DIR__ . '/json_src.txt';
$lines=file($file);
foreach( $lines as $line ){
    $json=json_decode( $line );
    printf('%s<hr />', $json->sid );
}