2015-05-29 101 views
1

我想使用PHP修改JSON數據格式。

我有一個這樣的陣列:
修改JSON數據

Array ( 
[0] => stdClass Object ( 
    [0] => Thu Apr 30 12:25:12 +0000 2015) 
[1] => stdClass Object ( 
    [0] => Wed Apr 15 21:57:05 +0000 2015) 
    ) 

我曾嘗試json_encode($數據);但它是未來這樣的:

[{"0":"Thu Apr 30 12:25:12 +0000 2015"},{"0":"Wed Apr 15 21:57:05 +0000 2015"}] 

但我想這種格式:

["Thu Apr 30 12:25:12 +0000 2015","Wed Apr 15 21:57:05 +0000 2015"] 

我應該怎麼辦?

+2

你爲什麼要這樣。它不會在下一次解碼。 –

+2

你需要將你的結構修改爲一個字符串數組,而不是對象對象。 –

+1

我會回去重溫初始數組是如何創建的。你顯然認爲你正在創建一個簡單的數組,但實際上你已經創建了一個對象數組,每個對象的屬性都是'0'。 – RiggsFolly

回答

0

試試這個功能,通過您的數組作爲參數

function to_array_of_strings($data){ 
    $result_array = array(); 
     foreach($data as $key => $object){ 
      foreach($object as $object_key => $object_value){ 
       $result_array[] = $object_value; 
      } 
     } 
    return $result_array; 
} 
+0

與您的解決方案結果是一個字符串,但不幸的是我想要一個對象數組 – souzanne

+0

你說你想這[[星期四4月30日12:25:12 +0000 2015年],「星期三4月15日21:57:05 +0000 2015「],所以這不是一個對象數組,而是一串字符串。告訴我,如果我是對的,我會改變答案來匹配你喜歡的。 – Hovo

+0

從更新的答案中籤出一個新函數to_array_of_strings($ data)。 – Hovo

1

在調用json_encode()之前,您需要更改數組的結構。

我不確定爲什麼你有這樣一個結構的數組,你可能想看看如何創建這種格式的$data。然而,正與你有什麼:

$dates = array(); 
foreach ($data as $obj) { 
    $dates[] = $obj->0; 
} 
print_r(json_encode($dates)); 

此外,安嫩特·庫馬爾·辛格使一個很好的點,如果你以後反序列化JSON這樣,它不會產生相同的陣列。再次,您應該重新審視這個數組是如何序列化和反序列化的,並確保它們匹配。

+0

首先,我有一個數據,我想分析它[http://stackoverflow.com/questions/ 30492158/notice-undefined-property-mongoid /]和一些編碼後,我得到這種格式的數據($數據),實際上我想獲得對象的數組使用它來獲得統計信息,如果有更多的可能性,請諮詢 – souzanne

+0

唐沉默投票。 –

+0

她曾嘗試'json_encode'她的$數據,她有東西,但她想要的只是獲得別的東西。她不關心反序列化/解碼,她不能得到想要的結果 - '[「Thu Apr 30 12:25:12 +0000 2015」,「Wed Apr 15 21:57:05 +0000 2015」]' 'json'格式。我已經低估了,因爲這個答案回答了完全不同的問題。 – Hovo

0

我嘗試這樣做的工作原理:

$i=0; 
    foreach($fin as $key1 => $value){ 
     foreach($value as $key2 => $value2){ 
      $dates[$i]= $value2 ; 
      $i++; 
     } 
    }