簡體   English   中英

PHP按值搜索數組中的所有條目

[英]PHP Search for all entries in an array by value

因此,大約一個小時以來,我一直在為此而苦苦掙扎...我正在使用MusicBrainz api,因此,我現在試圖檢索藝術家ColdPlay的所有發行版(因為他在不同的國家/地區發行了幾個發行版) 。

我想做的是:

•在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);

通過循環,簡單的代碼是:

$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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM