1

我有这个功能并且收到这个错误

Warning: array_merge(): Argument #1 is not an array in

$diff = array_merge($followers['ids'], $friends['ids']);

然后

Invalid argument supplied for foreach() in 

功能:

 public function addtosystemAction(){
        $this->_tweeps = new Application_Model_Tweeps();
        $http = new Zend_Http_Client();
        $http->setUri('http://api.twitter.com/1.1/followers/ids.json?cursor=-1&screen_name=testuser');
        $followers = Zend_Json::decode($http->request()->getBody(), true);
        $http->setUri('http://api.twitter.com/1.1/friends/ids.json?cursor=-1&screen_name=testuser');
        $friends = Zend_Json::decode($http->request()->getBody(), true);
        $diff = array_merge($followers['ids'], $friends['ids']);
        $resultArray = array();
        foreach ($diff as $id){
            if(FALSE == $this->_tweeps->checkExisting($id)){
                $resultArray[] = $id;
                if(count($resultArray) == 50){
                    break;
                }
            }
    }

为什么我会收到此错误的任何提示?

4

2 回答 2

1

您应该在传递给函数之前检查数组是否为空

尝试这个

public function addtosystemAction(){
    $this->_tweeps = new Application_Model_Tweeps();
    $http = new Zend_Http_Client();
    $http->setUri('http://api.twitter.com/1.1/followers/ids.json?cursor=-1&screen_name=testuser');
    $followers = Zend_Json::decode($http->request()->getBody(), true);
    $http->setUri('http://api.twitter.com/1.1/friends/ids.json?cursor=-1&screen_name=testuser');
    $friends = Zend_Json::decode($http->request()->getBody(), true);

    if( (!empty($followers['ids'])) && (!empty($friends['ids'])) ){
      $diff = array_merge($followers['ids'], $friends['ids']);
      $resultArray = array();
      if(!empty($diff)){
      foreach ($diff as $id){
        if(FALSE == $this->_tweeps->checkExisting($id)){
            $resultArray[] = $id;
            if(count($resultArray) == 50){
                break;
            }
        }
      }
     }
    }
}
于 2013-06-18T08:38:48.993 回答
0

连接到 Twitter API 时,您似乎没有进行身份验证。您的两个链接在{"errors":[{"message":"Bad Authentication data","code":215}]}未通过身份验证时都会导致,在这种情况下,$followers['ids']不会是数组,因为它不存在。

Twitter 的 API 文档包含有关身份验证的信息。

如果这不是问题,我很抱歉,但从你的代码来看似乎是这样。

于 2013-06-18T07:47:54.683 回答