2016-01-20 87 views
0

我有一個數組。我發佈爲JSON,因爲這是我的API輸出。重複值時從現有陣列與子陣列創建新陣列

[ 
    { 
    "compId": 26, 
    "addonId": "1", 
    "addonRate": "32" 
    }, 
    { 
    "compId": 26, 
    "addonId": "2", 
    "addonRate": "51" 
    }, 
    { 
    "compId": 7, 
    "addonId": "1", 
    "addonRate": "11" 
    }, 
    { 
    "compId": 7, 
    "addonId": "2", 
    "addonRate": "12" 
    } 
] 

而且我要轉換的是陣列,這樣我可以得到以下的輸出:

[ 
    { 
    "addonId": "1", 
    "companies": { 
     "compId": 26, 
     "addonRate": "32" 
     }, 
     { 
     "compId": 7, 
     "addonRate": "11" 
     } 
    }, 
    { 
    "addonId": "2", 
    "companies": { 
     "compId": 26, 
     "addonRate": "51" 
     }, 
     { 
     "compId": 7, 
     "addonRate": "12" 
     } 
    } 
] 

到目前爲止,我能提取不同compIdaddonId。但是,我想要在每個插件中添加這些公司以及子陣列中的相應費率。

任何幫助將是偉大的! 感謝

+0

你可以使用PHP循環它 – SIDU

+0

@SIDU我給了很多嘗試,但到目前爲止,正如我所說的只能提取不同compId和addonId成獨立的數組。任何提示如何將sub comp數組添加到具有相應值的addon數組中? – Mehulkumar

回答

1

您是否嘗試過類似

$newArray = array(); 
foreach ($startingArray as $row) { 
    if (!isset($newArray[$row['addonId']]) 
     $newArray[$row['addonId']] = array(
      'addonId'=>$row['addonId'], 
      'companies'=>array() 
     ); 
    } 
    $newArray[$row['addonId']]['companies'][] = array( 
     "compId"=> $row['compId'], 
     "addonRate"=> $row['addonRate'] 
    ); 
} 
+0

聖!只需要簡單的經典'if(!isset)'語句。只需要一次修改'「compId」=> $ newArray [$ row ['compId']]'將會是'「compId」=> $ row ['compId']'。非常感謝! – Mehulkumar

+0

固定。很高興我能幫上忙! – wogsland

+0

太完美了!我從中學到了很多! – Mehulkumar