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