Php如何从字典对象中获取数据

时间:2018-05-16 10:17:42

标签: php arrays json dictionary

我正在接受来自这个

的API的回复
[{"destination_url":"https://www.smh.com.au/business/the-economy/australia-s-workplaces-are-transforming-search-where-the-jobs-will-be-in-2024-20180418-p4zaal.html?promote_channel=edmail&mbnr=MjAyNTgyMjU&eid=email:nnn-13omn654-ret_newsl-membereng:nnn-04%2F11%2F2013-news_am-dom-news-nnn-age-u&campaign_code=13INO010&et_bid=29124074&list_name=40_smh_newsalert&instance=2018-04-18--20-11--UTC",
  "doc_id":"17014",
  "main_url":"http://click.email.fairfaxmedia.com.au/?qs=b3370d8980e989c9e39909e0291c60d501f8a164477f9e049f07626b2a9c7e79da7d38ad705d7713e024559ecf2f217f79f8c08f728ab7fe",
  "redirect_urls":"http://click.email.fairfaxmedia.com.au/?qs=b3370d8980e989c9e39909e0291c60d501f8a164477f9e049f07626b2a9c7e79da7d38ad705d7713e024559ecf2f217f79f8c08f728ab7fe||http://www.smh.com.au/business/the-economy/australia-s-workplaces-are-transforming-search-where-the-jobs-will-be-in-2024-20180418-p4zaal.html?promote_channel=edmail&mbnr=MjAyNTgyMjU&eid=email:nnn-13omn654-ret_newsl-membereng:nnn-04%2F11%2F2013-news_am-dom-news-nnn-age-u&campaign_code=13INO010&et_bid=29124074&list_name=40_smh_newsalert&instance=2018-04-18--20-11--UTC"
}]"

现在我必须从中访问doc_id。以下是我尝试过的内容:

$landerProperties = $request->data;
$landerProperties = json_decode(json_encode($landerProperties,true),true);
$id = (int)$landerProperties[0]['doc_id'];
foreach ($landerProperties as $key => &$value) {
   unset($value['doc_id']);
}

但它给了我一个例外:Illegal string offset 'doc_id'。请告诉我如何从这里访问数据。

1 个答案:

答案 0 :(得分:1)

如果要访问第一个,请使用:(注意json字符串周围的单引号)

代码:(Demo

$json = '[{"destination_url":"https://www.smh.com.au/business/the-economy/australia-s-workplaces-are-transforming-search-where-the-jobs-will-be-in-2024-20180418-p4zaal.html?promote_channel=edmail&mbnr=MjAyNTgyMjU&eid=email:nnn-13omn654-ret_newsl-membereng:nnn-04%2F11%2F2013-news_am-dom-news-nnn-age-u&campaign_code=13INO010&et_bid=29124074&list_name=40_smh_newsalert&instance=2018-04-18--20-11--UTC","doc_id":"17014","main_url":"http://click.email.fairfaxmedia.com.au/?qs=b3370d8980e989c9e39909e0291c60d501f8a164477f9e049f07626b2a9c7e79da7d38ad705d7713e024559ecf2f217f79f8c08f728ab7fe","redirect_urls":"http://click.email.fairfaxmedia.com.au/?qs=b3370d8980e989c9e39909e0291c60d501f8a164477f9e049f07626b2a9c7e79da7d38ad705d7713e024559ecf2f217f79f8c08f728ab7fe||http://www.smh.com.au/business/the-economy/australia-s-workplaces-are-transforming-search-where-the-jobs-will-be-in-2024-20180418-p4zaal.html?promote_channel=edmail&mbnr=MjAyNTgyMjU&eid=email:nnn-13omn654-ret_newsl-membereng:nnn-04%2F11%2F2013-news_am-dom-news-nnn-age-u&campaign_code=13INO010&et_bid=29124074&list_name=40_smh_newsalert&instance=2018-04-18--20-11--UTC"}]';

echo (int)json_decode($json, true)[0]['doc_id'];

输出:

17014