PHP中的多级JSON数组
在我的农业相关Android应用程序中,用户将作物的名称发送到PHP Web服务,该Web服务应返回作物的详细信息 下面是数据库的示例结构PHP中的多级JSON数组,php,android,json,pdo,Php,Android,Json,Pdo,在我的农业相关Android应用程序中,用户将作物的名称发送到PHP Web服务,该Web服务应返回作物的详细信息 下面是数据库的示例结构 Crop_Master:Crop_Id , Crop_Name , Seed_Rate , Fertilizer Pest: Crop_id , Pest_Name 现在我了解了PDO的fetchAll()函数,如果数据来自单个表,则将其转换为JSON数组 这样:这里的数据来自Crop_主表,工作正常 $query1="select seed_rate,f
Crop_Master:Crop_Id , Crop_Name , Seed_Rate , Fertilizer
Pest: Crop_id , Pest_Name
现在我了解了PDO的fetchAll()函数,如果数据来自单个表,则将其转换为JSON数组
这样:这里的数据来自Crop_主表,工作正常
$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"}
.
.
.
]
}
]
那么如何运行多个查询并生成单个输出数组?您需要将数组元素“有害程序”添加到数组$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只是一个示例,需要针对您的数据库进行调整您需要获得第一个结果集,比如$output,然后迭代每个输出的唯一id,并对每个输出执行新的查询,将结果附加到原始结果中,即$output[害虫]Yes。。这就是我想要的。现在我可以向output[]数组添加更多结果,如$output['deseases']或$output['soil_types']。坦克斯@安德烈。