合并对象中的数组


Merge arrays in an object

我是php和json的新手。你能建议我如何得到我想要的产出吗。

JSON文件:

{
   "1415772360":[
     {"apple":"0"},
     {"mango":"0"},
     {"grapefruit":"0"},
     {"melons":"12"},
     {"peaches":"2"},
     {"banana":"1"}
   ],
   "1415772420":[
     {"apple":"0"},
     {"mango":"0"},
     {"grapefruit":"0"},
     {"melons":"7"},
     {"peaches":"1"},
     {"banana":"1"}
   ]
}

期望输出

[
  {
    "minute":"1415772360",
    "apple":"0",
    "mango":"0",
    "grapefruit":"0",
    "melons":"12",
    "peaches":"2",
    "banana":"1”
  },
  {
    "minute":"1415772420",
    "apple:"0",
    "mango":"0",
    "grapefruit":"0",
    "melons":"7",
    "peaches":"1",
    "banana":"1”
  }
]

我如何在PHP中做到这一点?我真的很感激你的帮助。谢谢

我会尝试json_decode。它不会得到您想要的输出,但它会从您的JSON创建一个数组。

文件:http://php.net/manual/en/function.json-decode.php

我的测试:

$json = "{'"1415772360'":[{'"apple'":'"0'"},{'"mango'":'"0'"},{'"grapefruit'":'"0'"},
{'"melons'":'"12'"},{'"peaches'":'"2'"},{'"banana'":'"1'"}], '"1415772420'":
[{'"apple'":'"0'"},{'"mango'":'"0'"},{'"grapefruit'":'"0'"},{'"melons'":'"7'"},
{'"peaches'":'"1'"},{'"banana'":'"1'"}]}";
$new = json_decode($json);
print_r($new);

输出:

stdClass Object ( [1415772360] => Array ( [0] => stdClass Object ( [apple] => 0 ) 
[1] => stdClass Object ( [mango] => 0 ) [2] => stdClass Object ( [grapefruit] => 0 ) 
[3] => stdClass Object ( [melons] => 12 ) [4] => stdClass Object ( [peaches] => 2 ) 
[5] => stdClass Object ( [banana] => 1 ) ) [1415772420] => Array ( [0] => stdClass Object ( [apple] => 0 ) 
[1] => stdClass Object ( [mango] => 0 ) [2] => stdClass Object ( [grapefruit] => 0 ) 
[3] => stdClass Object ( [melons] => 7 ) [4] => stdClass Object ( [peaches] => 1 ) 
[5] => stdClass Object ( [banana] => 1 ) ) )

tyteen4a03是正确的,这只需要一些循环来重写结构。这将按如下方式进行:

// Original JSON string
$json = '{
   "1415772360":[
     {"apple":"0"},
     {"mango":"0"},
     {"grapefruit":"0"},
     {"melons":"12"},
     {"peaches":"2"},
     {"banana":"1"}
   ],
   "1415772420":[
     {"apple":"0"},
     {"mango":"0"},
     {"grapefruit":"0"},
     {"melons":"7"},
     {"peaches":"1"},
     {"banana":"1"}
   ]
}';
// Convert JSON to array
$content = json_decode($json);
// Create new array container
$crate = array();
// Get minutes
foreach ($content AS $minute => $fruitbasket) {
  $tmp = new stdClass;
  $tmp->minutes = $minute;
  // Get array of objects
  foreach ($fruitbasket AS $fruits)
  {
    // Get object element and value
    foreach ($fruits AS $key => $value)
    {
        // add to temporary object
        $tmp->$key = $value;
    }
  }
  // write to new array
  $crate[] = $tmp;
}

print(json_encode($crate));