2014-07-11 38 views
-1

我有這個數據。如何在PHP中格式化此數據結果?

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

現在,我希望它是這樣的。 Add 「msg」 as index/key

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

我該如何做到這一點?任何想法?謝謝。

+0

你有什麼想法嗎?你有嘗試過什麼嗎? – putvande

+0

試過json_decode()? –

+0

@RakeshSharma:這兩個都不是有效的JSON。 –

回答

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)); 
+0

感謝您的信息。 – kjames

+0

不客氣的人 – ilpaijin

-1

一個緩慢的方式做到這一點會是這樣(假設它是一個數組):

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

var_dump($newData); 

編輯如果是JSON數據,它與json_decode($data, true)先轉換成數組。

+0

嗨。謝謝你的想法。而不是使用$ newData [] ['msg'] = $ item; 我用這個。 $ newData ['msg'] ['id'] = $ item-> id。有用。 – kjames

+0

它既不是數組也不是JSON數據。 –

-1

你可以這樣說:

foreach($data->data as $key => &$val) 
{ 
    $stdO = new stdClass(); 
    $stdO->msg = $val; 
    $data->data[$key] = $stdO; 
} 
+0

什麼是'$ data'? –

+0

非常明顯的事情,json數組用戶提到。這說的是一切$ data-> data –

+0

不,實際上,它沒有。它實際上什麼也沒說。由於OP有一個字符串,而不是一個數組。另外,由於你使用' - >'操作,這意味着你也沒有數組,所以你有一個對象。更何況這是OP的數據不是有效的JSON。目前,這個答案約20%正確,80%不正確。 –

0

您可以使用如記事本++或編輯加的工具。 1.按Ctrl + H(替換) 2.將文本設置爲「{\ n \ t id:」 3. SET將文本設置爲「msg {\ n \ t id:」 4.保留正則表達式複選框被選中。 5.然後單擊全部替換按鈕。