2013-06-27 120 views
0

我有一個創建類的實例的頁面。該課程獲取用戶(他們的徽章)的一些信息,但是當我返回對象時,我只能得到第一個記錄。下面的一些代碼。PHP從類中獲取數組對象

$badges = new Badges; 

$result = $badges->getBadges($userID); 
$row_array[] = $result; 
echo json_encode($row_array); 


class Badges 
{ 
    function getBadges($userID) 
    { 
     $get_badge_query = mysqli_query($GLOBALS['connect'], "SELECT * FROM tbl_my_badges WHERE user_id = '" . $userID . "'"); 

     while($get_badge_result = mysqli_fetch_assoc($get_badge_query)) { 
      $result = array("done" => "true", 
          "badge_icon" => $get_badge_result['badge_icon'], 
          "badge_text" => $get_badge_result['badge_message']); 

     } 
     return $result; 
    } 
} 

我已經嘗試添加一個數組變量外循環並與結果填充此並返回變量,但仍然無法正常工作。

任何幫助將是偉大的。

+0

請解釋一下你認爲'$ result = array(「done」=>「true」,...'line of code does。 – zerkms

+0

不起作用意味着我仍然只有一個結果,當我知道有 – puks1978

+0

是的,我改變了我的評論,期望從你的代碼:-)你不會存儲所有的結果,但只有最後一個 – zerkms

回答

2

您需要積累的結果到一個數組,然後返回:

$results = array(); 
while($get_badge_result = mysqli_fetch_assoc($get_badge_query)) { 
    $results[] = array("done" => "true", 
        "badge_icon" => $get_badge_result['badge_icon'], 
        "badge_text" => $get_badge_result['badge_message']); 
} 
return $results; 

否則你只是覆蓋在每次迭代的$result變量,它總是被設置在最後一個記錄D B。

+0

是...這個喲在這裏回答:) – KyleK

+0

謝謝。我不得不稍微修改它,不知道爲什麼,但當我返回$結果並試圖將它分配給另一個數組$ row_array時,它仍然無法工作。所以基本上我有$ row_array [] = $結果,似乎工作。 – puks1978