2016-12-12 13 views
-2

Iは、以下のJSONを有する:再構築ネストされたJSONデータ

{ 
    "filaria": [{ 
     "user_input_test_result": "", 
     "test_id": "3519710705971061481279327210", 
     "gid": "1481279304461" 
    }, { 
     "user_input_test_result": "", 
     "test_id": "3519710705971061481279364547", 
     "gid": "1481279342277" 
    }], 
    "patient_test_analysis": [{ 

     "test_id": "3519710705971061481279327210", 
     "gid": "1481279304461" 

    }, { 
     "test_id": "3519710705971061481279364547", 
     "gid": "1481279342277" 

    }] 
} 

Iはfilariapatient_test_analysisデータは、対応するgid値のサブアレイになるようにキー名gidに基づいて、このJSONを再構築する必要があり、

{ 
    "upload_status": { 
     "1481279304461": { 
      "filaria": [{ 
       "status": "Success", 
       "test_id": "3519710705971061481279327210" 
      }], 
      "patient_test_analysis": [{ 
       "status": "Success", 
       "test_id": "3519710705971061481279327210" 
      }] 
     }, 
     "1481279342277": { 
      "filaria": [{ 
       "status": "Success", 
       "test_id": "3519710705971061481279364547" 
      }], 
      "patient_test_analysis": [{ 
       "status": "Success", 
       "test_id": "3519710705971061481279364547" 
      }] 
     } 
    } 
} 

各サブアレイには、"status": "Success"要素も追加する必要があります。


私は出力を得るために次のコードを書いた:

$jsonArray = json_decode($json, true); 
$arrayStatus = array(); 

foreach ($jsonArray as $key => $value) { 
    $key; $inc = 0 ; 
    for($i=0;$i<count($value);$i++){ 
     $patient_id = $value[$i]['gid']; 
     $s = $inc++; 
     $arrayStatus[$patient_id][$key][$s]['status'] = "Success"; 
     $arrayStatus[$patient_id][$key][$s]['test_id'] = 'xxx';  
    }  
}   

$results = array();  
$results['upload_status'] = $arrayStatus; 
echo $resArr = json_encode($results); 

を私は出力以下の取得:第二gidにおける余分な間接レベルで

{ 
    "upload_status": { 
     "1481279304461": { 
      "filaria": [{ 
       "status": "Success", 
       "test_id": "3519710705971061481279327210" 
      }], 
      "patient_test_analysis": [{ 
       "status": "Success", 
       "test_id": "3519710705971061481279327210" 
      }] 
     }, 
     "1481279342277": { 
      "filaria": { 
       "1": { 
        "status": "Success", 
        "test_id": "3519710705971061481279364547" 
       } 
      }, 
      "patient_test_analysis": { 
       "1": { 
        "status": "Success", 
        "test_id": "3519710705971061481279364547" 
       } 
      } 
     } 
    } 
} 

を。

どこが間違っているのか分かりません。

答えて

1

これを試してみてください:

$jsonArray = json_decode($json, true); 

$arrayStatus = array(); 


foreach ($jsonArray as $key => $value) { 

    $key; $inc = 0 ; 
    for($i=0;$i<count($value);$i++){ 

     $patient_id = $value[$i]['gid']; 
     $s = $inc++; 
     //Avoid array indexs 
     $arrayStatus[$patient_id][$key][] = ['status' => "Success", 'test_id' => 'xxx']; 

    } 
} 

$results = array(); 
$results['upload_status'] = $arrayStatus; 
echo $resArr = json_encode($results); 
+0

おかげトン!!。キーと値に大きな括弧を使用する理由を少し詳しく説明できますか? – user375947

関連する問題