2013-05-31 137 views
0

您好我正在處理一個簡單的腳本,我想將給定的SQL查詢的結果輸出到JSON中。使用foreach插入數組元素

這是我到目前爲止有:

$player = $this->game->getPlayer(5); 
$leaderboard= $this->game->getLeaderboard(5); 

$data = array(
      'player' => array(
       $player[0]->member_userunique, // USERNAME 
       $player[0]->score, // HIGHSCORE 
       $player[0]->memberid 
      ), 
      'leaderboard' => array(
       'score #1', 
       'score #2', 
       'score #3', 
       'score #4', 
       'score #5' 
      ) 
     ); 
echo json_encode($data); 

getPlayer(X)將返回關於球員的一些信息。而getLeaderboard將從數據庫中獲得前5條記錄。但是,我想將返回的SQL結果中的每一行迭代到'排行榜'數組中。

我想我可以使用一些蠻力的鍵入$排行榜[0] - > ....等等,但我想知道更聰明的方式來做到這一點。

感謝您的幫助。

+0

請向我們展示代碼如何填充$ this->遊戲...或告訴我們如何知道有多少排行榜。 'getLeaderboard(5)'中的** 5 **是要返回的項目數量,還是它是播放器的標識符? –

回答

2

喜歡的東西下面可以用來建立你的數組:

$leaderboardArray = array(); 
foreach($leaderboard as $num => $score){ 
    $leaderboardArray['score #'.$num] = $score; 
} 
$data['leaderboard'] = $leaderboardArray; 
+0

thx的提示,我把你的解決方案,並根據需要修改一下。 – Jeremy

0

只是循環在你$leaderboard陣列,建立自己的陣列,包括後來

$player = $this->game->getPlayer(5); 
$leaderboard= $this->game->getLeaderboard(5); 

$leaderboard_array = array('leaderboard'=>array()); 
foreach($leaderboard as $val) 
{ 
    $leaderboard_array[] = 'score #' . $val; 
} 

$data = array(
     'player' => array(
      $player[0]->member_userunique, // USERNAME 
      $player[0]->score, // HIGHSCORE 
      $player[0]->memberid 
     ), 
     $leaderboard_array, 
    ); 
0

嗯,你可以只讓getLeaderboard以你想要的分數返回數組,然後將其插入到像這樣的數據中

$data['leaderboard'] = $leaderboard; 

第二溶液是循環排行榜陣列添加各元素

foreach($leaderboard as $entry) { 
    $data['leaderboard'][] = "Score #" . $entry; 
} 

這假定排行榜返回字符串或數字,並且$的陣列(假設排行榜在要從getLeaderboard返回時的順序排序)數據['排行榜']是空的,當你這樣做。如果它不是空的,請取消設置或使用鍵來引用您正在更新的位置

+0

是基本上這就是我需要的。 Thx尋求幫助。 – Jeremy