【问题标题】:Convert JSON into PHP Array将 JSON 转换为 PHP 数组
【发布时间】:2013-11-22 15:04:11
【问题描述】:

我们在工作中使用 Zendesk,我正在使用他们提供的一些 PHP 和 CURL 来显示数据。但是,如果我使用 (json_decode($output,true)) ,我得到的数据会像这样返回:

array(4) { ["satisfaction_ratings"]=> array(2) { [0]=> array(10) { ["url"]=> string(83) "https://sessioncam1384769452.zendesk.com/api/v2/satisfaction_ratings/183839137.json" ["id" ]=> int(183839137) ["assignee_id"]=> int(551715796) ["group_id"]=> int(21464896) ["requester_id"]=> int(543065527) ["ticket_id"]=> int(6 ) ["score"]=> string(4) "good" ["created_at"]=> string(20) "2013-11-22T12:57:50Z" ["updated_at"]=> string(20) "2013 -11-22T12:57:50Z" ["comment"]=> string(3) "hey" } [1]=> array(10) { ["url"]=> string(83) "https://sessioncam1384769452.zendesk.com/api/v2/satisfaction_ratings/180738208.json" ["id"]=> int(180738208) ["assignee_id"]=> int(551715796) ["group_id"]=> int(21464896) ["requester_id"]=> int(543078357) ["ticket_id"]= > int(7) ["score"]=> string(4) "good" ["created_at"]=> string(20) "2013-11-22T13:16:11Z" ["updated_at"]=> string( 20) "2013-11-22T13:16:11Z" ["comment"]=> 字符串(5) "heyyy" } } ["next_page"]=> NULL ["previous_page"]=> NULL ["count"] => int(2) }

如果我只使用 json_decode($output) 我会得到:

object(stdClass)#1 (4) { ["satisfaction_ratings"]=> 数组(2) { [0]=> 对象(stdClass)#2(10){[“url”]=>字符串(83) “https://sessioncam1384769452.zendesk.com/api/v2/satisfaction_ratings/183839137.json” ["id"]=> int(183839137) ["assignee_id"]=> int(551715796) ["group_id"]=> int(21464896) ["requester_id"]=> int(543065527) ["ticket_id"]=> int(6) ["score"]=> string(4) "good" ["created_at"]=> 字符串(20)“2013-11-22T12:57:50Z”[“updated_at”]=>字符串(20) “2013-11-22T12:57:50Z”[“评论”]=> 字符串(3)“嘿”} [1]=> 对象(stdClass)#3(10){[“url”]=>字符串(83) “https://sessioncam1384769452.zendesk.com/api/v2/satisfaction_ratings/180738208.json” ["id"]=> int(180738208) ["assignee_id"]=> int(551715796) ["group_id"]=> int(21464896) ["requester_id"]=> int(543078357) ["ticket_id"]=> int(7) ["score"]=> string(4) "good" ["created_at"]=> 字符串(20)“2013-11-22T13:16:11Z”[“updated_at”]=>字符串(20) "2013-11-22T13:16:11Z" ["comment"]=> string(5) "heyyy" } } ["next_page"]=> NULL ["previous_page"]=> NULL ["count"]=> int(2) }

基本上我想要做的只是获取“评论”部分的列表。我尝试将此行用于 json_decode($output): print $data->satisfaction_ratings->comment;

但这不起作用,任何人都可以帮助只获取一个数组值吗?我无法更改系统输出的 JSON。运行 jason_decode 之前的 JSON 是:

字符串(666) "{"satisfaction_ratings":[{"url":"https://sessioncam1384769452.zendesk.com/api/v2/satisfaction_ratings/183839137.json","id":183839137,"assignee_id":551715796,"group_id":21464896,"requester_id":543065527,"ticket_id":6,"score ":"good","created_at":"2013-11-22T12:57:50Z","updated_at":"2013-11-22T12:57:50Z","comment":"hey"},{"url ":"https://sessioncam1384769452.zendesk.com/api/v2/satisfaction_ratings/180738208.json","id":180738208,"assignee_id":551715796,"group_id":21464896,"requester_id":543078357,"ticket_id":7,"score":"good","created_at": "2013-11-22T13:16:11Z","updated_at":"2013-11-22T13:16:11Z","comment":"heyyy"}],"next_page":null,"previous_page":null, "计数":2}"

如果有人能帮忙那就太好了

【问题讨论】:

  • 无论如何,您都可以将这些解码的对象视为数组。 $obj['satisfaction_ratings'][0]['url'] 等等。

标签: php arrays json


【解决方案1】:

如果你想访问那个特定的元素,那么你可以使用下面的:

echo $data->satisfaction_ratings[0]->comment;
echo $data->satisfaction_ratings[1]->comment;

如果您将json_decode() 的第二个参数设置为TRUE,那么您需要使用数组语法来访问注释:

echo $data['satisfaction_ratings'][0]['comment'];
echo $data['satisfaction_ratings'][1]['comment'];

如果有多个 cmets,并且要显示所有这些,请使用循环:

foreach ($data['satisfaction_ratings'] as $comment) {
    echo $comment['comment'] . '<br/>';
}

【讨论】:

  • 谢谢@Amal,有没有简单的方法来完成第二级? (所以我说的是从 0 到最后一个数字是什么?)
  • 非常感谢,我现在知道了,看看你的回答,一直都很简单,我只是弄糊涂了。
  • @Stefan:很高兴能帮上忙!
【解决方案2】:

只是 cmets,作为一个数组:

$data = json_decode($output, true);

$comments = array_map(
    function ($s) { return $s['comment']; },
    $data['satisfaction_ratings']
);

【讨论】:

  • 感谢您抽出宝贵时间@bishop,不过我现在使用了其他答案
  • 只是不要因为 ThereIsMoreThanOneWayToDoIt 就认为 YouShouldDoItEveryWhichWay。通常有一个的方法可以做到这一点,你应该这样做:)
猜你喜欢
  • 2015-07-02
  • 2016-07-07
  • 2013-06-18
  • 1970-01-01
  • 2011-05-18
  • 2014-11-25
  • 2019-06-17
  • 2012-12-09
  • 2014-11-09
相关资源
最近更新 更多