我想知道如何在php中创建这样的JSON数组。。。
{
"roster1":{
"player0":{
"sport":"NFL",
"firstname":"Tyrod",
"lastname":"Taylor"
},
"player1":{
"sport":"NFL",
"firstname":"Lamar",
"lastname":"Miller"
}
}
"roster2":{
"player0":{
"sport":"NFL",
"firstname":"Carson",
"lastname":"Palmer"
},
"player1":{
"sport":"NFL",
"firstname":"David",
"lastname":"Johnson"
}
}
}
我知道它一定是某种多维数组,我假设?我试过。。。
$obj = new stdClass();
$y = 1;
$players["player".$x]['sport'] = "NFL";
$players["player".$x]['firstname'] = "Tyrod";
$players["player".$x]['lastname'] = "Taylor";
$x++;
$players["player".$x]['sport'] = "NFL";
$players["player".$x]['firstname'] = "Lamar";
$players["player".$x]['lastname'] = "Miller";
但这似乎是一个可怕的方法,我正在做一些非常愚蠢的事情。我真的很想知道做这种事情的正确方法。
我认为您需要创建insted for循环来创建子数组
for ($y = 1; $y < 3; $y++) {
$players = array();
for ( $x= 1; $x < 2; $x++ ) {
$players["player".$x]['sport'] = "NFL";
$players["player".$x]['firstname'] = "Tyrod";
$players["player".$x]['lastname'] = "Taylor";
}
$roster['roster'.$y][] = $players;
}
// this will give you what you want my friend
echo json_encode($roster);
理想情况下,您不会将花名册和球员编号添加到密钥中(花名册1、球员1等)。我会用数组键为我做这项工作。比如:
$data['rosters'][] = [
['sport' => 'nfl', 'firstname' => 'Tyrod', 'lastname' => 'Taylor'],
['sport' => 'nfl', 'firstname' => 'Lamar', 'lastname' => 'Miller'],
];
$data['rosters'][] = [
['sport' => 'nfl', 'firstname' => 'Carson', 'lastname' => 'Palmer'],
['sport' => 'nfl', 'firstname' => 'David', 'lastname' => 'Johnson'],
];
echo json_encode($data);
这应该会给你:
{
"rosters": [
[{
"sport": "nfl",
"firstname": "Tyrod",
"lastname": "Taylor"
}, {
"sport": "nfl",
"firstname": "Lamar",
"lastname": "Miller"
}],
[{
"sport": "nfl",
"firstname": "Carson",
"lastname": "Palmer"
}, {
"sport": "nfl",
"firstname": "David",
"lastname": "Johnson"
}]
]
}
下面是一个如何使用循环来构建此数据结构的示例。
$data = [];
// ...for the example, but you'll want this to be your source data.
$number_of_rosters = 2;
$number_of_players = 2;
foreach (range(1, $number_of_rosters) as $index => $roster) {
foreach (range(1, $number_of_players) as $player) {
$data['rosters'][$index][] = ['sport' => 'nfl', 'firstname' => 'Tyrod', 'lastname' => 'Taylor'];
}
}