如何在PHP中格式化此数据结果?

时间:2014-07-11 09:22:16

标签: php

我有这些数据。

   data: {
       {
         id: 1,
         message: "text message"
       },
       {
         id: 2,
         message: "text message again"
       },
       {..},
       {..}
    }

现在,我希望它是这样的。“msg”添加为 index / key

   data: {
       msg: {
              id: 1,
              message: "text message"
       },
       msg: {
              id: 2,
              message: "text message again"
       },
       msg: {..},
       msg: {..}
    }

我怎样才能做到这一点?任何的想法?感谢。

4 个答案:

答案 0 :(得分:1)

据我所知,你不能在json数据中使用相同名称的密钥。请注意,这不是有效的json。

例如:

data: {
   {
     id: 1,
     message: "text message"
   },
   {
       ...
   }
}

应该是这样的:

{
    "data":[
        {
            "id":1,
            "message":"text message"
        },{ 
            "id":2, 
            "message":"text message again"
        }
    ]
}

然而,为了重现您的数据,我推出了一种类似的解决方案:

$data = [
    "data" => [
        [
            "id" => 1,
            "message" => "text message"
        ],
        [
            "id" => 2,
            "message" => "text message again"
        ]
    ]
];

var_dump(json_encode($data));

foreach ($data['data'] as $key => $value) 
{
    $data['data']["msg".$key] = $value;

    unset($data['data'][$key]);
}

var_dump($data);
var_dump(json_encode($data));

答案 1 :(得分:0)

您可以使用Notepad ++或Edit-plus等工具。 1.执行Ctrl + H(替换) 2.将From text设置为“{\ n \ t id:” 3. SET将文本设为“msg {\ n \ t id:” 4.将正则表达式复选框保持为选中状态。 5.然后单击“全部替换”按钮。

答案 2 :(得分:-1)

这样做很慢(假设它是一个数组):

$newData = array();
foreach($data as $item){
    $newData[]['msg'] = $item;
}

var_dump($newData);

编辑如果是JSON数据,请先使用json_decode($data, true)将其转换为数组。

答案 3 :(得分:-1)

你可以这样做:

foreach($data->data as $key => &$val)
{
    $stdO = new stdClass();
    $stdO->msg = $val;
    $data->data[$key] = $stdO;
}
相关问题