Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.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中更改json数组格式?_Php_Arrays_Laravel - Fatal编程技术网

如何在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]['

我有一个php脚本,它将数据存储到一个数组中,然后转换成json数组。下面是脚本

$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,而不仅仅是一个。