Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 分组和/或重写现有阵列_Php_Arrays_Json - Fatal编程技术网

Php 分组和/或重写现有阵列

Php 分组和/或重写现有阵列,php,arrays,json,Php,Arrays,Json,我正在使用一个数据库系统进行某种游戏比赛,玩家可以组队参加比赛。现在球员有自己的数据库,然后有一个团队数据库(团队id、姓名、加入密码等)和一个我保存哪个球员的数据库(球员姓名/id在哪个团队名称/id中)。我的数据库调用为我提供了一个带有团队名称、用户名等的数组。我想用一个通用的团队名称值对用户进行分组,但我无法根据需要重写它 我想为我个人在C#应用程序中使用构建某种api。在这里,我希望脚本的输出是json,并且我希望向所有团队展示一些细节。现在我正在使用以下代码: $team_keys =

我正在使用一个数据库系统进行某种游戏比赛,玩家可以组队参加比赛。现在球员有自己的数据库,然后有一个团队数据库(团队id、姓名、加入密码等)和一个我保存哪个球员的数据库(球员姓名/id在哪个团队名称/id中)。我的数据库调用为我提供了一个带有团队名称、用户名等的数组。我想用一个通用的团队名称值对用户进行分组,但我无法根据需要重写它

我想为我个人在C#应用程序中使用构建某种api。在这里,我希望脚本的输出是json,并且我希望向所有团队展示一些细节。现在我正在使用以下代码:

$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写了一个答案:-)