Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 修改JSON数据_Php_Json - Fatal编程技术网

Php 修改JSON数据

Php 修改JSON数据,php,json,Php,Json,我想使用PHP修改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 ) ) [{"0":"Thu Apr 30 12:25:12 +0000 2015"},{"0":"Wed

我想使用PHP修改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 ) 
      )
[{"0":"Thu Apr 30 12:25:12 +0000 2015"},{"0":"Wed Apr 15 21:57:05 +0000   2015"}]
我尝试了json_编码($data);但事情是这样的:

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 ) 
      )
[{"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"]

我该怎么办?

在调用
json\u encode()
之前,您需要更改数组的结构

我不知道为什么会有这样一个结构的数组,您可能想看看
$data
是如何以这种格式创建的。但是,使用您所拥有的:

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

另外,anant kumar singh提出了一个很好的观点,如果您稍后反序列化此JSON,它将不会生成相同的数组。因此,您应该再次查看此数组是如何序列化和反序列化的,并确保它们匹配。

尝试此函数,将数组作为参数传递

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;
}

我试过这个,它很有效:

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

你为什么要这样。下次它将不会被解码。您需要将结构修改为字符串数组,而不是对象的对象。我将返回并重新讨论初始数组是如何创建的。您显然认为您正在创建一个简单数组,但实际上您已经创建了一个对象数组,每个对象的属性为“0”。首先@RiggsFolly,我有一个数据,我想解析它[经过一些编码后,我得到了这种数据格式($data),事实上,我想得到一个对象数组,用它来获取统计数据,如果有更大的可能性,请通知首先,我有一个数据,我想解析它[经过一些编码后,我得到了这种格式的数据($data),事实上,我想得到一个对象数组来使用它来获取统计数据,如果有更大的可能性,请告知她曾尝试对她的$data进行
json\u编码,她得到了一些东西,但她只想得到其他东西。她不在乎反序列化/解码,她无法得到想要的结果-
[“Thu Apr 30 12:25:12+0000 2015”,“2015年4月15日星期三21:57:05+0000”]
采用
json
格式。我投了反对票,因为这个答案回答了完全不同的问题。您确实意识到我们的两个答案达到了相同的结果。此外,有多条评论建议重新审视初始结构的制作方式,以从根本上避免此问题,因为所有这些代码都是不必要的。否netheless,我很感激你拥有你的否决票。对于你的解决方案,结果是一个字符串,但不幸的是我想要一个对象数组你说你想要这个[“Thu Apr 30 12:25:12+0000 2015”,“Wed Apr 15 21:57:05+0000 2015”],因此这不是对象数组,而是字符串数组。告诉我是否正确,我将更改答案以匹配您喜欢的内容。从更新的答案将新函数签出为字符串数组($data)。您的第一个解决方案返回的字符串类似于(“[“Thu Apr 30…”)而不是数组