PHP中的多级JSON数组

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

在我的农业相关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,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']。坦克斯@安德烈。