Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从Twitter API数据中检索图像_Php_Arrays_Json_Twitter - Fatal编程技术网

Php 如何从Twitter API数据中检索图像

Php 如何从Twitter API数据中检索图像,php,arrays,json,twitter,Php,Arrays,Json,Twitter,我正在建立一个页面,可以根据选定的主题拉推特——目前这是硬编码的,似乎工作正常。问题是,在处理JSON数据(现在已转换为数组)时,我正努力将检索图像所需的数组中的“media_url”键作为目标 除了重新编写代码或重新格式化代码外,我尝试了多种方法来定位帖子的媒体url键,但都无济于事。在其他答案中,我看到人们成功地将数据作为一个对象来使用,但我不知道如何做到这一点 我已经按照上的教程走到了这一步-我会注意到,人们曾询问如何检索此页面上的图像,但没有得到回复,很遗憾 require_once('

我正在建立一个页面,可以根据选定的主题拉推特——目前这是硬编码的,似乎工作正常。问题是,在处理JSON数据(现在已转换为数组)时,我正努力将检索图像所需的数组中的“media_url”键作为目标

除了重新编写代码或重新格式化代码外,我尝试了多种方法来定位帖子的媒体url键,但都无济于事。在其他答案中,我看到人们成功地将数据作为一个对象来使用,但我不知道如何做到这一点

我已经按照上的教程走到了这一步-我会注意到,人们曾询问如何检索此页面上的图像,但没有得到回复,很遗憾

require_once('TwitterAPIExchange.php');
/** Set access tokens here - see: https://dev.twitter.com/apps/ **/
$settings = array(
'oauth_access_token' => "xxx",
'oauth_access_token_secret' => "xxx",
'consumer_key' => "xxx",
'consumer_secret' => "xxx"
);
$url = "https://api.twitter.com/1.1/search/tweets.json";
$getfield = '?q=%23life&count=20&tweet_mode=extended&include_entities=true';
$requestMethod = 'GET';

$twitter = new TwitterAPIExchange($settings);

$string = json_decode($twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest(),$assoc = TRUE);
if(array_key_exists("errors", $string)) {echo "<h3>Sorry, there was a problem.</h3><p>Twitter returned the following error message:</p><p><em>".$string[errors][0]["message"]."</em></p>";exit();}
    foreach($string as $items)
    {
        if (is_array($items)){


            foreach($items as $item)
            {
                if ($item['user'] != null) {
                    echo $item['user']['name'] . "&nbsp" . "|" . "&nbsp" . "@" . $item['user']['screen_name']."<br />";
                    echo $item['full_text'] . "<br />";
                    echo $item['created_at']."<br />";
                    echo $item['entities']>['media'][0]['media_url'] . "<br />";
                    echo '<hr>';
                    var_dump($item);
                } 
                else {
                    return;
                }
            }

        }
    }



?>
require_once('TwitterAPIExchange.php');
/**在此处设置访问令牌-请参阅:https://dev.twitter.com/apps/ **/
$settings=数组(
“oauth\u访问\u令牌”=>“xxx”,
“oauth\u访问\u令牌\u秘密”=>“xxx”,
“消费者密钥”=>“xxx”,
“消费者机密”=>“xxx”
);
$url=”https://api.twitter.com/1.1/search/tweets.json";
$getfield='?q=%23life&count=20&tweet_mode=extended&include_entities=true';
$requestMethod='GET';
$twitter=newtwitterapiexchange($settings);
$string=json\u解码($twitter->setGetfield($getfield)
->buildOauth($url,$requestMethod)
->performRequest(),$assoc=TRUE);
如果(array_key_存在(“errors”,$string)){echo“很抱歉,出现了问题。Twitter返回了以下错误消息:

“$string[errors][0][“message”]。”

“exit();} foreach($string作为$items) { if(is_数组($items)){ foreach($items作为$item) { 如果($item['user']!=null){ echo$item['user']['name'].“|”.@.$item['user']['screen\u name'.”
; echo$item['full_text']。“
”; echo$item['created_at']。“
”; echo$item['entities']>['media'][0]['media_url']。“
”; 回声“
”; var_dump(项目); } 否则{ 返回; } } } } ?>

我在尝试重新格式化行
echo$item['entities']>['media'][0]['media\u url']时遇到许多错误。“
并且已经到达了在这里接触的点。希望我不必将其重新格式化为对象,但它看起来像是我可以的。

根据@MagnusEriksson的评论,我的问题是由我使用的语法不正确引起的


$item['entities']['media'][0]['media\u url']
允许我定位我正在寻找的索引,现在我可以为tweet显示图像:)谢谢Magnus

$item['entities']>['media']
中的
是怎么回事?尝试删除它。@MagnusEriksson OMG有效lol谢谢编辑:事实上这确实有效,但我仍然收到错误“未定义索引:媒体”。如果您有
>
,它将评估
$item['entities']
是否大于
['media'][0]['media\u url']”
。如果您想获取值,它应该是:
$item['entities']['media'][0]['media'][url']
如果这是数组的正确结构。奇怪的是,它工作时仍然返回一个错误?删除['media']也会停止它的工作。代码
echo$item['entities']>['media'][0]['media'[url']。“
可能只是抛出一个未定义的索引并回显值
1
。这行代码不会为您提供
$item['entities']['media'][0]['media\u url']