Php 分组和/或重写现有阵列
我正在使用一个数据库系统进行某种游戏比赛,玩家可以组队参加比赛。现在球员有自己的数据库,然后有一个团队数据库(团队id、姓名、加入密码等)和一个我保存哪个球员的数据库(球员姓名/id在哪个团队名称/id中)。我的数据库调用为我提供了一个带有团队名称、用户名等的数组。我想用一个通用的团队名称值对用户进行分组,但我无法根据需要重写它 我想为我个人在C#应用程序中使用构建某种api。在这里,我希望脚本的输出是json,并且我希望向所有团队展示一些细节。现在我正在使用以下代码:Php 分组和/或重写现有阵列,php,arrays,json,Php,Arrays,Json,我正在使用一个数据库系统进行某种游戏比赛,玩家可以组队参加比赛。现在球员有自己的数据库,然后有一个团队数据库(团队id、姓名、加入密码等)和一个我保存哪个球员的数据库(球员姓名/id在哪个团队名称/id中)。我的数据库调用为我提供了一个带有团队名称、用户名等的数组。我想用一个通用的团队名称值对用户进行分组,但我无法根据需要重写它 我想为我个人在C#应用程序中使用构建某种api。在这里,我希望脚本的输出是json,并且我希望向所有团队展示一些细节。现在我正在使用以下代码: $team_keys =
$team_keys = array();
foreach ($team_data AS $k => $sub_array)
{
$this_team = $sub_array['team_name'];
$team_keys[$this_team][$k] = array('username' => $sub_array['username']);
}
echo json_encode($team_keys, JSON_PRETTY_PRINT);
这给了我如下输出:
{
"Team1": {
"0": {
"username": "player1"
},
"1": {
"username": "player2"
},
"22": {
"username": "player3"
}
},
"Team2": {
"2": {
"username": "player4"
},
"3": {
"username": "player5"
}, .....
}
但我想实现以下目标:
{
"team_name": "Team1",
"team_password": "secret",
"creation_timestamp": "123456789",
"players": [
"Player1",
"Player2",
"Player3"
]
}, ....
我尝试了大量不同的方法,但我无法根据自己的需要重新组合和重写数组。希望有人能帮我
编辑:$team_数据如下所示(我使用JOIN将我的用户、团队和team_成员表连接在一起,以获得所有数据):
因此输入的是以下数据
array(4) {
[0]=>
array(4) {
["team_name"]=>
string(5) "Team1"
["username"]=>
string(7) "player1"
["team_password"]=>
string(6) "secret"
["team_id"]=>
int(1)
}
[1]=>
array(4) {
["team_name"]=>
string(5) "Team1"
["username"]=>
string(7) "player2"
["team_password"]=>
string(6) "secret"
["team_id"]=>
int(1)
}
[2]=>
array(4) {
["team_name"]=>
string(5) "Team2"
["username"]=>
string(7) "player1"
["team_password"]=>
string(6) "secret"
["team_id"]=>
int(2)
}
[3]=>
array(4) {
["team_name"]=>
string(5) "Team2"
["username"]=>
string(7) "player2"
["team_password"]=>
string(6) "secret"
["team_id"]=>
int(2)
}
}
<?php
$team_data = array(array('team_name' => 'Team1', 'username' => 'player1', 'team_password' => 'secret', 'team_id' => 1)
,array('team_name' => 'Team1', 'username' => 'player2', 'team_password' => 'secret', 'team_id' => 1)
,array('team_name' => 'Team2', 'username' => 'player1', 'team_password' => 'secret', 'team_id' => 2)
,array('team_name' => 'Team2', 'username' => 'player2', 'team_password' => 'secret', 'team_id' => 2)
);
$team_keys = array();
foreach ($team_data AS $player_dara) {
if (!isset($team_keys[$player_dara['team_id']])) {
$team_keys[$player_dara['team_id']] = array();
$team_keys[$player_dara['team_id']]['team_name'] = $player_dara['team_name'];
$team_keys[$player_dara['team_id']]['team_id'] = $player_dara['team_id'];
$team_keys[$player_dara['team_id']]['secret'] = $player_dara['secret'];
$team_keys[$player_dara['team_id']]['players'] = array();
}
$team_keys[$player_dara['team_id']]['players'][] = $player_dara['username'];
}
echo json_encode(array_values($team_keys), JSON_PRETTY_PRINT);
这是我的代码和$team_数据的测试集
array(4) {
[0]=>
array(4) {
["team_name"]=>
string(5) "Team1"
["username"]=>
string(7) "player1"
["team_password"]=>
string(6) "secret"
["team_id"]=>
int(1)
}
[1]=>
array(4) {
["team_name"]=>
string(5) "Team1"
["username"]=>
string(7) "player2"
["team_password"]=>
string(6) "secret"
["team_id"]=>
int(1)
}
[2]=>
array(4) {
["team_name"]=>
string(5) "Team2"
["username"]=>
string(7) "player1"
["team_password"]=>
string(6) "secret"
["team_id"]=>
int(2)
}
[3]=>
array(4) {
["team_name"]=>
string(5) "Team2"
["username"]=>
string(7) "player2"
["team_password"]=>
string(6) "secret"
["team_id"]=>
int(2)
}
}
<?php
$team_data = array(array('team_name' => 'Team1', 'username' => 'player1', 'team_password' => 'secret', 'team_id' => 1)
,array('team_name' => 'Team1', 'username' => 'player2', 'team_password' => 'secret', 'team_id' => 1)
,array('team_name' => 'Team2', 'username' => 'player1', 'team_password' => 'secret', 'team_id' => 2)
,array('team_name' => 'Team2', 'username' => 'player2', 'team_password' => 'secret', 'team_id' => 2)
);
$team_keys = array();
foreach ($team_data AS $player_dara) {
if (!isset($team_keys[$player_dara['team_id']])) {
$team_keys[$player_dara['team_id']] = array();
$team_keys[$player_dara['team_id']]['team_name'] = $player_dara['team_name'];
$team_keys[$player_dara['team_id']]['team_id'] = $player_dara['team_id'];
$team_keys[$player_dara['team_id']]['secret'] = $player_dara['secret'];
$team_keys[$player_dara['team_id']]['players'] = array();
}
$team_keys[$player_dara['team_id']]['players'][] = $player_dara['username'];
}
echo json_encode(array_values($team_keys), JSON_PRETTY_PRINT);
你能把$team_的数据输入也贴出来吗。也许作为php数组,只需对数据的组织方式进行示例!没有它很难帮助你。嗨,科迪,我用你要求的相关数据编辑了我的问题:)
player3
来自team2
,不是吗?您想在何处获取创建时间戳
?是的,player3来自team2,我还没有输出时间戳,但它在数据库中可供以后使用。基本上,这是一份拥有团队的球员名单。@wordiboi写了一个答案:-)