2013-04-25 78 views
0

我正在开发一个Facebook应用程序,我有一些PHP函数。当我打电话给他们其中一人时,请求会一遍又一遍地发送并进入无限循环。我不知道为什么。 My功能是:在某些条件下PHP函数进入无限循环

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

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

阵列(大小= 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"; 

请伸出援助之手,我一直在努力一段时间,我不知道该怎么做。


如果我打电话getLikes()之前调用writeJSON(),它的工作原理。如果我之后调用它,它会进入循环。我很明显需要在调用getLikes后调用它,因为我需要将这些数据写入JSON文件

回答

0

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

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

+0

我现在看到我没有说清楚。如果我以前不调用'getLikes()'调用'writeJSON',它就可以工作。如果我在'getLikes'之后调用它,它会循环。 – 2013-04-27 12:45:59