加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

使用PHP脚本读取json文件并打印输出

发布时间:2020-12-13 21:49:27 所属栏目:PHP教程 来源:网络整理
导读:我必须编写一个脚本来读取一个 JSON文件,该文件将包含有关数据管道的信息 – 主要是三个组件 – 状态,注释和时间戳.一旦我用JSON读取文件,我需要打印出具有所有三个组件的相应数据管道的输出.输出看起来如下所示: 名称:阿波罗 状态:待定 评论:每月报告
我必须编写一个脚本来读取一个 JSON文件,该文件将包含有关数据管道的信息 – 主要是三个组件 – 状态,注释和时间戳.一旦我用JSON读取文件,我需要打印出具有所有三个组件的相应数据管道的输出.输出看起来如下所示:

名称:阿波罗
状态:待定
评论:每月报告
时间戳:00:00

我有以下脚本来生成JSON文件:

<?php
    $data = array(
             "name"=>"Apollo","cob"=> array(
                          status=> "completed",comment=> "Monthly report",timestamp=> "00:00"
                         ),);

header('Content-Type: application/json');
echo json_encode($data);
?>

我有以下脚本来读取生成的JSON文件并打印上述所需的输出:

<?php
    $data = file_get_contents ('./cob_details.json');
    $json = json_decode($data,true);

    echo ('<pre>');
    print_r ($json);
    echo ('</pre>');

    echo ('<br>output:</br>');

    foreach ($json as $key => $value)
    {
    echo "Name: $value Status: $value]<br />";
    }
?>

我对JSON和PHP特别陌生….你能不能让我知道我在这个脚本中缺少什么来获得所需的输出或我在哪里出错了?

解决方法

我认为问题是你的json数据生成器有一个小错误

试试这个,数组中的字段名称必须是文本文字而你忘了用引号括起名字

<?php
    $data = array(
             "name" => "Apollo","cob"  => array(
                          'status'    => "completed",'comment'   => "Monthly report",'timestamp' => "00:00"
                         )
              );

    echo json_encode($data);
?>

现在,读取数据的代码需要遍历第一个数组,然后使用$value变量从内部数组中获取它感兴趣的位,$value变量是内部数组的地址.我假设实际数据包含的字段多于您的示例代码,所以我使用了一个开关,但如果不那么复杂的话就会这样做

<?php
    $data = file_get_contents ('./cob_details.json');
    $json = json_decode($data,TRUE);

    echo ('<pre> print the json ');
    print_r ($json);
    echo ('</pre>');

    echo '<br>output:</br>';

    foreach ($json as $key => $value)
    {
        switch ( $key ) {
            case 'name' :
                echo "Name: $value";
                break;
            case 'cob' : 
                echo ' Status: ' . $value['status'] . ']<br />';
                break;
            case 'another field' :
                // and so on
                break;
        }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读