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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP按值搜索数组中的所有条目相关的知识,希望对你有一定的参考价值。

所以在一个小时之内,我正在努力解决这个问题...我正在使用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);
答案

通过循环,简单的代码是:

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

以上是关于PHP按值搜索数组中的所有条目的主要内容,如果未能解决你的问题,请参考以下文章

按值或键进行嵌套数组搜索

如何创建片段以重复变量编号中的代码行

片段中 ListView 的 setOnItemClickListener

片段中ListView的setOnItemClickListener

php按值复制数组元素,而不是按引用

PHP数组参数按值,在通过引用循环数组项时被修改