【问题标题】:Inserting array element using foreach使用 foreach 插入数组元素
【发布时间】:2013-05-31 09:01:47
【问题描述】:

您好,我正在编写一个简单的脚本,我想将给定 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]->.... 来使用一些蛮力,但我想知道更聪明的方法。

感谢您的帮助。

【问题讨论】:

  • 请向我们展示您如何填写 $this->game 的代码...或告诉我们如何知道有多少排行榜。 getLeaderboard(5) 中的 5 也是要返回的项目数,还是播放器的标识符?

标签: php sql arrays json codeigniter


【解决方案1】:

类似下面的东西可以用来构建你的数组:

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

【讨论】:

  • 感谢提示,我采用了您的解决方案并根据需要对其进行了一些修改。
【解决方案2】:

只需在您的 $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,
    );

【讨论】:

    【解决方案3】:

    好吧,你可以让 getLeaderboard 返回带有你想要的分数的数组,然后像这样将它插入到 $data 中

    $data['leaderboard'] = $leaderboard;
    

    第二种解决方案是循环添加每个元素的排行榜数组(假设从getLeaderboard返回时排行榜按照您想要的顺序排序)

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

    这假设排行榜返回一个字符串或数字数组,并且当您执行此操作时 $data['leaderboard'] 为空。如果它不为空,请取消设置或使用键来引用您正在更新的位置

    【讨论】:

    • 是的,这就是我所需要的。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 2013-05-05
    • 2017-07-08
    • 2021-05-31
    • 2017-11-06
    • 2016-12-12
    • 1970-01-01
    相关资源
    最近更新 更多