2017-06-29 57 views
0

这是我从票据系统获得的JSON数据。我想用PHP解析它并将数据保存到数据库中以创建统计信息和仪表板,以便每个人都可以看到打开了多少张门票以及最近关闭的门票。 我可以阅读一些数据,但不是一切。在PHP中使用json_decode解析JSON

{ 
    "address":"belgium", 
    "workers":{ 
     "peter":{ 
      "worker":"peter", 
      "open_close_time":"45.6 T/h", 
      "closed_tickets":841, 
      "open_tickets":7, 
      "last_checkin":1498768133, 
      "days_too_late":0 
     }, 
     "mark":{ 
      "worker":"mark", 
      "open_close_time":"45.9 T/h", 
      "closed_tickets":764, 
      "open_tickets":2, 
      "last_checkin":1498768189, 
      "days_too_late":0 
     }, 
     "walter":{ 
      "worker":"walter", 
      "open_close_time":"20.0 T/h", 
      "closed_tickets":595, 
      "open_tickets":4, 
      "last_checkin":1498767862, 
      "days_too_late":0 
     } 
    }, 
    "total_tickets":2213, 
    "tickets":[ 
     { 
      "id":2906444760, 
      "client":"297", 
      "processed":0 
     }, 
     { 
      "id":2260, 
      "client":"121", 
      "processed":0 
     }, 
     { 
      "id":2424, 
      "client":"45", 
      "processed":0 
     } 
    ], 
    "last_closed_tickets":[ 
     { 
      "id":2259, 
      "client":"341", 
      "closed_on":"2017-06-25T10:11:00.000Z" 
     }, 
     { 
      "id":2258, 
      "client":"48", 
      "closed_on":"2017-06-20T18:37:03.000Z" 
     } 
    ], 
    "settings":{ 
     "address":"belgium", 
     "email":"", 
     "daily_stats":0 
    }, 
    "open_close_time":"161.1 T/h", 
    "avgopen_close_time":123298, 
    "ticket_time":"27.1 T/h", 
    "stats":{ 
     "time":1498768200087, 
     "newest_ticket":1498768189000, 
     "closed_tickets":2200, 
     "open_tickets":13, 
     "active_workers":3 
    }, 
    "avg_paid_tickets":64.55, 
    "avg_afterservice_tickets":35.45 
} 

这是我尝试获取工作人员姓名的PHP代码,但这不起作用。

<?php 
$string = file_get_contents("example.json"); 
$json = json_decode($string, true); 
echo $json['address']; 
foreach($json->workers->new as $entry) { 
    echo $entry->worker; 
} 
?> 

如果我试图像下面在这里它的工作原理,但那时我已经有了改变,每次其他员工开始的代码。

echo $json['workers']['mark']['closed_tickets']; 
+3

随着''json_decode''是值为''True''你的第二个参数。 >返回的对象将被转换为关联数组。 尝试''foreach($ json ['workers'] as $ entry)'' – alistaircol

+0

如果有疑问转储数组以查看您使用的结构。 – Doug

回答

1
<?php 
$string = file_get_contents("example.json"); 
$json = json_decode($string, true); 
foreach($json['workers'] as $entry){ 
     echo $entry['worker'] . " has " . $entry['open_tickets'] . " tickets" . "\n"; 
} 
?> 
+0

欢迎来到StackOverflow @Tom。如果解决了您的问题,请务必将此答案标记为正确。 –