rest api,规范化mysql在php中返回的行数据

时间:2017-12-31 07:51:50

标签: php mysql mysqli

我是PHP的新手,我学习的时间不到3天,我被困,我来自#C背景。下面是我的行的结果。

while($row = mysqli_fetch_assoc($rowult)) {
    echo json_encode($row);
}

//result of echo json_encode($row);
{"id":"1","name":"john","blood_type_id":"1","value": 213,"blood_name":"dog"}{"id":"1","name":"john","blood_type_id":"2","value": 888,"blood_name":"bat"}

建立像这样的json的最佳方式是什么?

[{
    "id":1,
    "name":"john",
    "blood":[{blood_type_id: 1},{value:213},{blood_name:"dog"},
             {blood_type_id: 2},{value:888},{blood_name:"bat"}]
}]

1 个答案:

答案 0 :(得分:2)

您需要创建一个数组并首先分配每个数据,然后最后对其进行编码: -

如下所示: -

$final_array = [];// create an array
while($row = mysqli_fetch_assoc($rowult)) {
    $final_array[$row['name']]['id'] = $row['id']; // use name as key so that same name records will come inside single-array 
    $final_array[$row['name']]['name'] = $row['name']; // assign values to array 
    $final_array[$row['name']]['blood'][] = [['blood_type_id'=>$row['blood_type_id']],['value'=>$row['value']],['blood_name'=>$row['blood_name']]]; // since you need `blood` as an array so create a key blood an assign values to them like an array
}

$final_array = array_values($final_array); // now remove name indexes

echo json_encode($final_array); // final encoded data

硬编码示例示例输出: - https://eval.in/928775