将一维数组转换为php中的多维数组

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

我有一个包含电影信息的阵列以及它们在电影院上映的时间。每次放映都是另一种结果,因此一部电影可以多次出现在阵列中。我想将重复的电影条目合并为一个,然后将所有放映的影片放到另一个新数组中。格式是这样的:

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    
... )
)

有人知道如何在“标题”之后将其合并,并将日期时间的所有条目放入新的维度。感谢您的帮助!

php arrays multidimensional-array
1个回答
0
投票

假设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中。

© www.soinside.com 2019 - 2024. All rights reserved.