2015-05-29 79 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++; 
     } 
    }