2017-10-24 10 views
1
"forms": [ 
      { 
       "id": 1, 
       "name": "new_patient", 
       "deleted_at": null, 
       "created_at": "2017-10-24 05:12:24", 
       "updated_at": "2017-10-24 05:12:24", 
       "pivot": { 
        "institution_id": 1, 
        "form_id": 1, 
        "field_name_id": 21, 
        "field_caption": "Gön.Hekim" 
       } 
      }, 
      { 
       "id": 1, 
       "name": "new_patient", 
       "deleted_at": null, 
       "created_at": "2017-10-24 05:12:24", 
       "updated_at": "2017-10-24 05:12:24", 
       "pivot": { 
        "institution_id": 1, 
        "form_id": 1, 
        "field_name_id": 22, 
        "field_caption": "Kurum" 
       } 
      }, 
      { 
       "id": 1, 
       "name": "new_patient", 
       "deleted_at": null, 
       "created_at": "2017-10-24 05:12:24", 
       "updated_at": "2017-10-24 05:12:24", 
       "pivot": { 
        "institution_id": 1, 
        "form_id": 1, 
        "field_name_id": 23, 
        "field_caption": "Endikasyon" 
       } 
      }, 
      { 
       "id": 2, 
       "name": "edit_patient", 
       "deleted_at": null, 
       "created_at": "2017-10-24 05:12:24", 
       "updated_at": "2017-10-24 05:12:24", 
       "pivot": { 
        "institution_id": 1, 
        "form_id": 2, 
        "field_name_id": 24, 
        "field_caption": "Materyal" 
       } 
      } 
     ] 

フォームオブジェクトを同じ名前/ IDでグループ化したいと思います。私がしたいどのようにPHPグループJsonオブジェクト

...

"forms": [ 
       { 
        "id": 1, 
        "name": "new_patient", 
        "deleted_at": null, 
        "created_at": "2017-10-24 05:12:24", 
        "updated_at": "2017-10-24 05:12:24", 
        "fields": [{ 
         "field_name_id": 21, 
         "field_caption": "Gön.Hekim" 
        },{ 
         "field_name_id": 22, 
         "field_caption": "Kurum" 
        },{ 
         "field_name_id": 23, 
         "field_caption": "Endikasyon" 
        }] 
       }, 
       { 
        "id": 2, 
        "name": "edit_patient", 
        "deleted_at": null, 
        "created_at": "2017-10-24 05:12:24", 
        "updated_at": "2017-10-24 05:12:24", 
        "fields": [{ 
         "field_name_id": 24, 
         "field_caption": "Materyal" 
        }] 
       } 
      ] 

私はそうでは検索とGoogleで検索、しかし、私は私の問題のための任意の方法を見つけることができませんでした。同様の質問に対する回答があります。

私はforeachループでやったが、私はそこにphpのための方法があるかもしれないと思った。

また、jsonで100個以上のオブジェクトがある場合、foreachは遅くなる可能性があります。

アドバイスありがとうございます。

+1

pivotキーが提供される解決策をした削除します作業? – mega6382

答えて

1

次のことを試してみてください。

$arr = json_decode($str, true); 
$arr2 = []; 
$ids = []; 
foreach($arr['forms'] as $form) 
{ 
    if(!in_array($form['id'], $ids)) 
    { 
     $ids[] = $form['id']; 
     $arr2[$form['id']] = $form; 
    } 
    unset($arr2[$form['id']]['pivot']); 
    $arr2[$form['id']]['fields'][] = [$form['pivot']['field_name_id'], $form['pivot']['field_caption']]; 
} 
$str2 = json_encode(['forms' => array_values($arr2)]); 

echo $str2; 

これは、独自のフォームを得るためにforeachループを使用してfield_name_idfield_captionを保持するために、新しいキーfieldsを作成しても

+1

素晴らしい仕事、ありがとう! – Nevermore

関連する問題