因此,就像一个小时一样,我正在努力解决这个问题...... 我正在使用MusicBrainz api,结果我正在尝试检索艺术家ColdPlay的所有版本(Becouse他在不同的国家有几个版本)。
我想做的是:
•搜索MusicBrainz响应数组以获得重复的歌曲标题。
•对于每个重复项,找到发布日期的国家
所以响应看起来像这样:
{
"title": "Parachutes",
"releaseDates": {
"UK": "2010-10-10",
"USA": "2010-10-12",
"AU": "2010-10-20",
"XW": "2010-11-11",
}
}
而不是:https://hastebin.com/fejazububi.php
我尝试过使用array_filter,foreach等。没有运气。 你们有人有这方面的建议吗?谢谢!
解决:
生成的回复:https://hastebin.com/ubiqasugav.php 代码:
$Data = [];
$ReleasesData = $ArtistData->releases['releases'];
foreach ($ReleasesData as $rel) {
if(!isset($Data[$rel['title']]['releaseDates'][$rel['country']])) {
$Data[$rel['title']]['releaseDates'][$rel['country']] = [
'date' => $rel['date'],
'status' => $rel['status']
];
}
}
return print_r($Data);
答案 0 :(得分:0)
通过循环,简单的代码是:
$titles = array_unique(array_column($myarray, 'title'));
$result = array();
foreach ($titles as $title) {
$releaseDates = array();
foreach ($myarray as $event) {
if ($event['title'] == $title) {
$releaseDates[$event['country']] = $event['date'];
}
}
$data['title'] = $title;
$data['releaseDates'] = $releaseDates;
$result[] = $data;
}