如何在PHP中创建平面JSON对象而不是对象数组
我试图用PHP中的三个数组创建一个平面JSON对象。以下代码的输出是一个包含对象数组的对象:如何在PHP中创建平面JSON对象而不是对象数组,php,json,Php,Json,我试图用PHP中的三个数组创建一个平面JSON对象。以下代码的输出是一个包含对象数组的对象: { "Amphibian":[ {"Frogs":"Green"} ], "Mammal":[ {"Bats":"Black"}, {"Elephants":"Grey"}, {"Rats":"Black"}, {"Turtles":"Green"} ] } 然而,这不是我想要的。在循环过程中,是否可以将输出转换为包含平面对象的对象?这是我想要的输
{
"Amphibian":[
{"Frogs":"Green"}
],
"Mammal":[
{"Bats":"Black"},
{"Elephants":"Grey"},
{"Rats":"Black"},
{"Turtles":"Green"}
]
}
然而,这不是我想要的。在循环过程中,是否可以将输出转换为包含平面对象的对象?这是我想要的输出:
{
"Amphibian":
{"Frogs":"Green"},
"Mammal":
{"Bats":"Black","Elephants":"Grey","Rats":"Black","Turtles":"Green"}
}
代码如下:
$colors = array("Frogs"=>"Green","Bats"=>"Black","Elephants"=>"Grey","Rats"=>"Black","Turtles"=>"Green");
$allAnimals = array("Frogs","Bats","Elephants","Rats","Turtles");
$group = array("Frogs"=>"Amphibian","Bats"=>"Mammal");
$output = array();
foreach($allAnimals as $key=>$animal){
if(isset($group[$animal])){
$groupTitle = $group[$animal];
}
$output[$groupTitle][] = array($animal=>$colors[$animal]);
}
print JSON_encode($output);
将其修改为
$output[$groupTitle][$animal]=$colors[$animal]代码>
$colors = array("Frogs"=>"Green","Bats"=>"Black","Elephants"=>"Grey","Rats"=>"Black","Turtles"=>"Green");
$allAnimals = array("Frogs","Bats","Elephants","Rats","Turtles");
$group = array("Frogs"=>"Amphibian","Bats"=>"Mammal");
$output = array();
foreach($allAnimals as $key=>$animal){
if(isset($group[$animal])){
$groupTitle = $group[$animal];
}
$output[$groupTitle][$animal] = $colors[$animal]; //here
}
print JSON_encode($output);
输出:
{
"Amphibian":{"Frogs":"Green"},
"Mammal":{"Bats":"Black","Elephants":"Grey","Rats":"Black","Turtles":"Green"}
}
{
“两栖动物”:{“青蛙”:“绿色”},
“哺乳动物”:{“蝙蝠”:“黑色”,“大象”:“灰色”,“老鼠”:“黑色”,“海龟”:“绿色”}
}第一个JSON对象和第二个JSON对象之间没有区别。我错过了什么?