2013-06-27 123 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