2017-12-31 72 views
1

저는 PHP를 처음 사용하기 때문에 3 일 이내에 배울 것입니다. 나는 걸려 있고 #C 배경에서 왔습니다. 아래는 내 행의 결과입니다.나머지 api, 정상화 mysql은 PHP에서 행 데이터를 반환했습니다

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"}] 
}] 
+0

MySql5.7 이상에서는 JSON이라는 구조화되지 않은 형식으로 데이터를 저장할 수 있습니다. 필요한 경우 json 문자열 전체를 저장하고이 json의 하위 집합을 쿼리 할 수 ​​있습니다. – 4EACH

+0

@ 4EACH하지만 이제이 간단한 API 구조체를 출력해야합니다. 어떻게 정상적으로 그걸 할 건데? 나는 PHP 녀석이 아니에요, 내가 도움이 필요해 : ( –

+0

@GlobinHughes 귀하의 데이터 형식은 충분히 간단하지만, 출력에 대한 귀하의 사양은 나에게 의미가 없습니다. 만약 내가 API를 내게 그 형식으로 어떤 결과를 준 서비스를 사용했다면, 내 우선 순위는 다른 소스를 찾는 것입니다. – YvesLeBorg

답변

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

+0

은 PHP 사용자가 항상 데이터 재구성을 수행하는 방법입니다. 복잡한 일 같아요. –

+0

print_r 내가 원하는 것을 줄 수 없으며, json으로 만드는 방법은 무엇입니까? 자바 스크립트가 필요합니다. –

+0

@GlobinHughes che 그 편집 된 솔루션입니다. 나는 당신이 물었던 것을 바꿔 달았다. –