我有一个包含电影信息的阵列以及它们在电影院上映的时间。每次放映都是另一种结果,因此一部电影可以多次出现在阵列中。我想将重复的电影条目合并为一个,然后将所有放映的影片放到另一个新数组中。格式是这样的:
Array (
[title] => title
[synopsis] => synopsis
[poster] => poster
[cast] => cast
[director] => director
[length] => length
[rating] => rating
[datetime] => datetime )
应格式化为:
Array (
[title] => title
[synopsis] => synopsis
[poster] => poster
[cast] => cast
[director] => director
[length] => length
[rating] => rating
[datetime] => Array
( [0] => datetime0
[1] => datetime1
... )
)
有人知道如何在“标题”之后将其合并,并将日期时间的所有条目放入新的维度。感谢您的帮助!
假设title
是唯一的(没有两个电影具有相同的标题)。然后这将工作:
$newArray = [];
foreach ($array as $element) {
if (array_key_exists($element['title'], $newArray)) {
$newArray[$element['title']]['datetime'][] = $element['datetime'];
} else {
$element['datetime'] = [$element['datetime']];
$newArray[$element['title']] = $element;
}
}
$newArray = array_values($newArray);
但是,正如其他注释所指出的那样,这不是最佳解决方案,您可能要考虑数据库结构或在SQL中使用类似CONCAT
的方法来返回用符号分隔的日期列表,然后使用[C0 ]在PHP中。