php - 如何在 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"}
}

代码如下:

$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"}
}

关于php - 如何在 PHP 中创建平面 JSON 对象而不是对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31073087/

相关文章:

javascript - 如何从 URL 获取 JSON 并将其值设置为文本字段?

php - 根据时间连接到mysql表

php - 以 HTML 形式保留数据

php - 使用 PHP 到 MySQL 日期时间格式

c# - 这两种返回 JSON 对象的方式有什么区别?

javascript - JQuery JSON 数据不显示

php - 您将如何使用 GitHub 为独立的 PHP 项目实现自动更新?

javascript - 如何在 PHP 中使用 javascript 函数在单击按钮时执行 sql 删除查询

java - json对象包含json数组解析

javascript - 从 MongoDB 中的模式内部返回一个 json