PHP函数在某些条件下进入无限循环

时间:2013-04-25 22:19:38

标签: php arrays request infinite-loop

我正在开发一个Facebook应用程序,我有一些PHP功能。当我打电话给其中一个时,请求会一遍又一遍地发送并进入无限循环。我不知道为什么。 我的职责是:

function writeJSON()
{
    if (!$user_id) {
        echo "User not logged in";
    }
   else
{
global $arrayForJSON,$user_id;
$arrayForJSON['a']='b';
var_dump($arrayForJSON);
}  
}

如果我像这样运行它,它将显示

  

array(size = 1)'a'=>字符串'b'(长度= 1)

哪个是对的。但是,如果我运行另一个向$arrayForJSON添加更多元素的函数,它将进入循环。另一个功能是:

function getLikes()
{
    global $facebook,$user_id,$arrayForJSON;
    $likes=NULL;
    if($user_id) {
          try {
            if(is_null($likes))
            $likes = idx($facebook->api('/me/likes'), 'data', array());
            if ($likes) {
                $arrayForJSON['likes']=$likes;
            } 
        }
        catch(FacebookApiException $e){
             echo error_log($e);
        }
        echo "done";
        var_dump($arrayForJSON);
    }
    else
        echo "Not working";

请伸出援助之手,我已经做了一段时间了,我不知道该怎么办。


如果我在致电writeJSON()之前致电getLikes(),那就有效了。如果我之后调用它,它会进入循环。我显然需要在调用getLikes之后调用它,因为我需要将数据写入JSON文件

1 个答案:

答案 0 :(得分:0)

没有任何地方可以在两个函数中进行任何循环或递归。很可能你的getLikes()函数是从发布代码之外的其他地方重复调用的。

有一个类似的问题here,这表明Facebook授权可能会以某种方式出错。我在这里包含链接,因为可能有一些你没有显示的代码可能导致相同的行为。但是,它不能仅仅由您发布的代码引起。