如何在PHP中生成一个JSON对象,里面有两个数组

时间:2015-05-18 17:15:24

标签: php json

我正在尝试为我的游戏创建自己的排行榜系统,所以我正在使用PHP并向游戏请求Ajax信息,但由于我对PHP一点都不擅长,我对创建一个JSON对象,其中包含我需要在javascript部分处理的所有信息。

我想要做的是,PHP部分是生成这个JSON对象:

{players: ["name1", "name2", ..., "name10"], scores:[score1, score2, ..., score10]}

所以我可以使用像

这样的javascript工作
dataReceived.players[0]

我正在从数据库中正确地存储和获取数据,但是我无法在Ajax请求中生成要接收的JSON对象。基本上,这是我的PHP代码:

$query = "SELECT * FROM leadersboards ORDER by score ASC LIMIT 10";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());

$result_length = mysql_num_rows($result);

$arrayScores = array();
$arrayPlayers = array();

for($i = 0; $i < $result_length; $i++){
    $row = mysql_fetch_array($result);
    array_push($arrayPlayers, $row['player']);
    array_push($arrayScores, $row['score']);
}
$answer = json_encode(array('item' => $arrayPlayers, 'item' => $arrayScores), JSON_FORCE_OBJECT);

很抱歉,如果我在PHP中做了些蠢事,正如我所说,我根本不懂PHP,只是非常基本的东西。

4 个答案:

答案 0 :(得分:0)

问题是:

array('item' => $arrayPlayers, 'item' => $arrayScores)

设置后,您正在覆盖项目键。

答案 1 :(得分:0)

我想你想做这样的事情

$answer = json_encode(array('players' => $arrayPlayers, 'scores' => $arrayScores)

答案 2 :(得分:0)

Ok, so I fixed it this way, I don´t know if is the best option but it works

$myObject = new stdClass();
$myObject = array(
    "players" => $arrayPlayers,
    "scores" => $arrayScores,
);

echo json_encode($myObject);

答案 3 :(得分:0)

请停止使用mysql_ *而不是使用mysqli_ *或PDO。

根据您在对象内预期的数组输出,使用以下代码:

$application->__construct();