您好我正在编写一个简单的脚本,我希望将给定SQL查询的结果输出到JSON中。
这是我到目前为止所做的:
$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结果中的每一行迭代到“排行榜”数组中。
我想通过键入$ leaderboard [0] - > ....等我可以使用一些蛮力,但我想知道更聪明的方法来做到这一点。
感谢您的帮助。
答案 0 :(得分:2)
以下内容可用于构建阵列:
$leaderboardArray = array();
foreach($leaderboard as $num => $score){
$leaderboardArray['score #'.$num] = $score;
}
$data['leaderboard'] = $leaderboardArray;
答案 1 :(得分: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,
);
答案 2 :(得分:0)
好吧,你可以让getLeaderboard以你想要的分数返回数组,然后将它插入到这样的$ data中
$data['leaderboard'] = $leaderboard;
第二个解决方案是循环添加每个元素的排行榜数组(假设排行榜按照从getLeaderboard返回时所需的顺序排序)
foreach($leaderboard as $entry) {
$data['leaderboard'][] = "Score #" . $entry;
}
这假设排行榜返回一个字符串或数字数组,并且$ data ['leaderboard']在您执行时为空。如果它不为空,则取消设置或使用键引用您正在更新的位置