如何在php中更改json数组格式?
我有一个php脚本,它将数据存储到一个数组中,然后转换成json数组。下面是脚本如何在php中更改json数组格式?,php,arrays,laravel,Php,Arrays,Laravel,我有一个php脚本,它将数据存储到一个数组中,然后转换成json数组。下面是脚本 $gameTraining = array(); $index = 0; foreach($todayTraining->toArray() as $training){ if($todayTraining[$index]['type'] === 'easy'){ $gameTraining['easy'][]['game_id'] = $todayTraining[$index]['
$gameTraining = array();
$index = 0;
foreach($todayTraining->toArray() as $training){
if($todayTraining[$index]['type'] === 'easy'){
$gameTraining['easy'][]['game_id'] = $todayTraining[$index]['game_id'];
}
$index++;
}
return $gameTraining;
下面是我得到的回应
{
"training": {
"easy": [
{
"game_id": 12
},
{
"game_id": 6
},
{
"game_id": 26
}
]
}
}
但我想从数组中删除括号,所以请您指导我如何才能做到这一点?我想转换如下
{
"training": {
"easy": [
"game_id": 12,
"game_id": 6,
"game_id": 26
]
}
}
一个数组中不能有多个具有相同键的项。您可以使用游戏ID创建一个数组,因此此行:
$gameTraining['easy'][]['game_id'] = $todayTraining[$index]['game_id'];
$gameTraining['easy']['game_ids'][] = $todayTraining[$index]['game_id'];
可以使用此行进行更改:
$gameTraining['easy'][]['game_id'] = $todayTraining[$index]['game_id'];
$gameTraining['easy']['game_ids'][] = $todayTraining[$index]['game_id'];
试着这样做:
$todayTraining = [
[
'type' => 'easy',
'game_id' => 123
],
[
'type' => 'easy',
'game_id' => 456
]
];
$gameTraining = array();
$index = 0;
foreach($todayTraining as $training){
if($todayTraining[$index]['type'] === 'easy'){
$gameTraining['easy'][] = substr(json_encode(['game_id' => $todayTraining[$index]['game_id']]), 1, -1);
}
$index++;
}
echo json_encode($gameTraining, JSON_PRETTY_PRINT);
只需使用以下行:
$gameTraining['easy'][] = $todayTraining[$index]['game_id'];
而不是:
$gameTraining['easy'][]['game_id'] = $todayTraining[$index]['game_id'];
希望它能起作用。使用
foreach()
为您提供$training
中的元素时,您的输出不是有效的JSONY,但随后您将从$todayTraining[$index]
中获取值,您自己正在维护$index
。@RakeshJakhar,该键被故意设置为游戏ID
,因为它将包含多个ID,而不仅仅是一个。