2016-01-20 98 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