는이 길을 따를 수 :
- 키 $의 service_prov_services을 통해 json_decode에게
- 으로 반복을 사용하여 PHP 배열로 JSON 변환합니다. 과정에서 :
a) service_type
을 배열에 저장하십시오. 아이템이이 값에 속하는지 반복 체크 할 때마다
b) 그렇지 않으면 새로운 콜렉션을 생성하고 푸시합니다.
당신이 service_prov_services
- 에
service_type
- 사용이 컬렉션의 컬렉션이있을 것이다 루프의 끝에서
-
을로 json_encode
를 사용하여 JSON으로 다시 배열을 변환
업데이트
귀하의 결과 JSON은 service_mea 문자열이 아니라 배열로 확인하십시오. 내 코드는이를 배열로 제공합니다. 매퍼에 UTF8 키를 저장하는 것을 제외하고는 정확히 동일한 단계를 수행했습니다.
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$json = <<<EOF
{
"error": false,
"service_prov_services": [
{
"service_measure": "Darmkrebsfr?herkennung (Schnelltest, Koloskopie)",
"service_prov_type": "Doctor",
"service_type": "Fr?herkennung und Vorsorge",
"service_prov_name": "Dr. Test",
"addr_street": "xxx Street"
},
{
"service_measure": "Gesundheits-Check-up",
"service_prov_type": "Doctor",
"service_type": "Fr?herkennung und Vorsorge",
"service_prov_name": "Dr. Test",
"addr_street": "xxx Street"
},
{
"service_measure": "Suchtmittelkonsum",
"service_prov_type": "Doctor",
"service_type": "Gesundheitskurse",
"service_prov_name": "Dr. Test",
"addr_street": "xxx Street"
},
{
"service_measure": "Stressbew?ltigung oder Entspannung",
"service_prov_type": "Doctor",
"service_type": "Gesundheitskurse",
"service_prov_name": "Dr. Test",
"addr_street": "xxx Street"
},
{
"service_measure": "Schutzimpfung",
"service_prov_type": "Doctor",
"service_type": "Sport und Gesundheit",
"service_prov_name": "Dr. Test",
"addr_street": "xxx Street"
}
]
}
EOF;
$listArr = json_decode($json, TRUE);
$service_type = array();
$service_prov_services = array();
$mapper = array();
$entry_list = array();
$mapIndex = 0; //initialize map index at zero
foreach($listArr['service_prov_services'] as $collection){
if(in_array($collection['service_type'], array_values($mapper))){
//make edit to existing entry by pusing service_measure
//extract the index from mapper now
foreach($mapper as $key=>$value){
if($value == $collection['service_type']){
$needle = $key;
break;
}
}
$arr_service_measure_old = (array)$entry_list[$needle]['service_measure'];
$arr_service_measure_old[] = $collection['service_measure'];
//update the array
$entry_list[$needle] = array(
'service_type' => $collection['service_type'],
'service_measure' => $arr_service_measure_old,
);
}else{
//new entry needs to be made
$currentMapIndex = $mapIndex;
$mapper[$mapIndex++] = $collection['service_type'];
$entry_list[$currentMapIndex] = array(
'service_type' => $collection['service_type'],
'service_measure' => $collection['service_measure'],
);
}
}
echo json_encode($entry_list);
생성 된 JSON은 다음과 같습니다 누구나 지적 할 수 있다면 내가 여기에 요청하고 왜
[
{
"service_type": "Fr?herkennung und Vorsorge",
"service_measure": [
"Darmkrebsfr?herkennung (Schnelltest, Koloskopie)",
"Gesundheits-Check-up"
]
},
{
"service_type": "Gesundheitskurse",
"service_measure": [
"Suchtmittelkonsum",
"Stressbew?ltigung oder Entspannung"
]
},
{
"service_type": "Sport und Gesundheit",
"service_measure": "Schutzimpfung"
}
]
당신이 시도 것을 지금까지 내가 PHP.That에 정렬 방법을 모르는 –
되어 보여주십시오 나에게 올바른 방향으로 나와 – Stefan