【问题标题】:php change structure of object / jsonphp改变对象/json的结构
【发布时间】:2017-05-04 17:42:44
【问题描述】:

我正在使用 laravel 和 angular,我正在尝试添加一些图表,现在我需要为图表插件获取特定结构中的数据,目前我的 api 返回一个如下所示的 json:

"data": {
    "enero": {
      "value": 50
    },
    "febrero": {
      "value": 130
    },
    "marzo": {
      "value": 220
    },
    "abril": {
      "value": 440
    },
    "mayo": {
      "value": 700
    },
    "junio": null,
    "julio": null,
    "agosto": null,
    "septiembre": null,
    "octubre": null,
    "noviembre": null,
    "diciembre": null
}

预期输出:

"data": [
            {
                "value": "50"
            },
            {
                "value": "130"
            },
            {
                "value": "220"
            },
            {
                "value": "440"
            },
            {
                "value": "700"
            },
            {
                "value": null
            },
            {
                "value": null
            },
            {
                "value": null
            },
            {
                "value": null
            },
            {
                "value": null
            },
            {
                "value": null
            },
            {
                "value": null
            }
        ]

【问题讨论】:

  • 你有没有尝试过?
  • 显示代码,生成json
  • 好的,那么...您的问题是什么? How do I ask a good question?
  • 我该怎么做?,我是php新手
  • @RubenMoralesFelix 希望我的帖子能给你你想要的确切输出..

标签: php arrays json object


【解决方案1】:

这里我们使用array_map 来收集所需的输出。

Try this code snippet here

<?php

$string='{"data": {
    "enero": {
      "value": 50
    },
    "febrero": {
      "value": 130
    },
    "marzo": {
      "value": 220
    },
    "abril": {
      "value": 440
    },
    "mayo": {
      "value": 700
    },
    "junio": null,
    "julio": null,
    "agosto": null,
    "septiembre": null,
    "octubre": null,
    "noviembre": null,
    "diciembre": null
}
}';
$result=array_map(function($value){
    return is_array($value) ? array("value"=>$value["value"]) : array("value"=>$value);
}, json_decode($string,true)["data"]);
$newResult["data"]=array_values($result);
echo json_encode($newResult,JSON_PRETTY_PRINT);

输出:

{
    "data": [
        {
            "value": 50
        },
        {
            "value": 130
        },
        {
            "value": 220
        },
        {
            "value": 440
        },
        {
            "value": 700
        },
        {
            "value": null
        },
        {
            "value": null
        },
        {
            "value": null
        },
        {
            "value": null
        },
        {
            "value": null
        },
        {
            "value": null
        },
        {
            "value": null
        }
    ]
}

【讨论】:

    【解决方案2】:
    $data = []; // new array
    foreach($oldArray['data'] as $key => $value){
      $data['data'][]['value'] = $value['value'];
    }
    

    【讨论】:

      猜你喜欢
      • 2016-02-06
      • 2019-12-18
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2020-02-27
      • 1970-01-01
      • 1970-01-01
      • 2019-03-15
      相关资源
      最近更新 更多