2013-04-25 83 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