PHP中的多级JSON数组

时间:2013-02-20 04:49:08

标签: php android json pdo

在我的与农业相关的Android应用中,用户将作物的名称发送到PHP webservice,该Web服务应返回有关该作物的详细信息。

这是数据库的示例结构。

Crop_Master:Crop_Id , Crop_Name , Seed_Rate , Fertilizer
Pest: Crop_id , Pest_Name

现在我知道PDO的fetchAll()函数,如果数据来自单个表,则将其转换为JSON数组。

像这样:这里的数据来自Crop_Master表并且工作正常。

$query1="select seed_rate,fertilizer_dosage from crop_master where crop_id='$crop_id'";

$res=$db->query($query1);

$output=$res->fetchAll(PDO::FETCH_ASSOC);

print(json_encode($output));

但是,当数据来自多个表时,我不知道如何创建单个“输出”数组。

假设我想创建一个这样的JSON数组:

[
   {
      "seed_rate":"value_from_db"
      "fertilizer":"value_from_db"
      "pests":
              [{"pest_name:"value_from_db"}
               {"pest_name:"value_from_db"}
                .
                .
                .
               ]
    }
]

然后,如何运行多个查询并生成单个输出数组?

1 个答案:

答案 0 :(得分:2)

你需要将数组元素“害虫”添加到数组$ output并填充它...如何,将取决于数据库结构,但可能像

$query1="select seed_rate,fertilizer_dosage from crop_master where crop_id='$crop_id'";    
$res=$db->query($query1);    
$output=$db->fetchAll(PDO::FETCH_ASSOC);

$query2="select pest_name from pests, crop_pests where pests.pest_id = crop_pests.pest_id and crop_pests.crop_id='$crop_id'";    
$res=$db->query($query2);    
$output["pests"]=$db->fetchAll(PDO::FETCH_ASSOC);

print(json_encode($output));

所以,重点是,您需要将有害生物数组作为$ output数组的元素。我的$ query2当然只是一个例子,需要针对您的数据库进行调整