这是一个简单的但由于某种原因我不能让它工作。我有一个JSON字符串,我正在转换...
$results = json_decode($output);
这给了我这个......
{
"text": "Test Text",
"truncated": false,
"entities": {
"media": [
{
"media_url": "http:\/\/pbs.twimg.com\/media\/34453543545.jpg",
"media_url_https": "https:\/\/pbs.twimg.com\/media\/34453543545.jpg",
"type": "photo",
"sizes": {
"thumb": {
"w": 150,
"h": 150,
"resize": "crop"
}
}
}
]
}
}
我试图像这样得到media_url ......
$media_url = $results->entities->media_url;
但它没有用,也试过......
$media_url = $results[entities][media_url];
但仍然没有快乐,我哪里出错?
答案 0 :(得分:3)
Media是一个数组,所以你必须这样访问它。
<?php
$str = '{
"text": "Test Text",
"truncated": false,
"entities": {
"media": [
{
"media_url": "http:\/\/pbs.twimg.com\/media\/34453543545.jpg",
"media_url_https": "https:\/\/pbs.twimg.com\/media\/34453543545.jpg",
"type": "photo",
"sizes": {
"thumb": {
"w": 150,
"h": 150,
"resize": "crop"
}
}
}
]
}
}';
$results = json_decode($str);
echo $results->entities->media[0]->media_url;
<强>结果:强>
http://pbs.twimg.com/media/34453543545.jpg
此外,如果媒体中有多个元素,那么您可以遍历它们。
foreach ($results->entities->media as $item) {
echo $item->media_url.PHP_EOL;
}
你甚至可以使用generator,它可以让你拉出第一个,或者循环它们。
$media_url = function() use ($results) {
foreach ($results->entities->media as $item) {
yield $item->media_url;
}
};
// get first
echo $media_url()->current();
// or loop
foreach ($media_url() as $item){
echo $item;
}
答案 1 :(得分:2)
media
是数组,因此您需要访问其元素。适当的参考文献如下:
$media_url = $results->entities->media[0]->media_url;