PHP按值搜索数组中的所有条目

问题描述 投票:0回答:1

所以在一个小时之内,我正在努力解决这个问题...我正在使用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);
php arrays multidimensional-array find
1个回答
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;
}
© www.soinside.com 2019 - 2024. All rights reserved.