You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP合并基于重复键的多维嵌套数组

合并多维数组中重复日期对应的影院放映信息

我需要处理一个带嵌套结构的多维数组,数组里存在重复的日期项,要把相同日期对应的影院放映信息合并到同一个日期实例中。

原数组示例:

$showTimes = array(
    array(
        'day' => 'Monday',
        'details' => array(
            array(
                'theater' => 'Theater 1',
                'times' => '1:00, 7:00, 8:00'
            )
        )
    ),
    array(
        'day' => 'Tuesday',
        'details' => array(
            array(
                'theater' => 'Theater 1',
                'times' => '2:00, 5:00'
            )
        )
    ),
    array(
        'day' => 'Tuesday',
        'details' => array(
            array(
                'theater' => 'Theater 2',
                'times' => '4:00, 9:00'
            )
        )
    ),
    array(
        'day' => 'Wednesday',
        'details' => array(
            array(
                'theater' => 'Theater 1',
                'times' => '1:00, 7:00, 8:00'
            )
        )
    )
);

期望把两个Tuesday项合并,让当日的所有影院信息都放在同一个details数组里。我之前尝试的代码逻辑有误,无法达到预期:

$new_array = array();
foreach ($showTimes as $subArray) {
    foreach ($subArray as $key=>$value) {
        $new_array['details'][$key] = $value;
    }
}
print_r($new_array);

正确解决方案

核心思路是用日期作为临时数组的键,快速判断是否已存在该日期,存在则追加details,不存在则初始化:

$merged = array();

foreach ($showTimes as $item) {
    $day = $item['day'];
    // 如果该日期已存在,追加details
    if (isset($merged[$day])) {
        $merged[$day]['details'] = array_merge($merged[$day]['details'], $item['details']);
    } else {
        // 不存在则直接存入临时数组
        $merged[$day] = $item;
    }
}

// 把关联数组转成索引数组,符合期望的输出结构
$finalArray = array_values($merged);

print_r($finalArray);

输出结果

Array
(
    [0] => Array
        (
            [day] => Monday
            [details] => Array
                (
                    [0] => Array
                        (
                            [theater] => Theater 1
                            [times] => 1:00, 7:00, 8:00
                        )

                )

        )

    [1] => Array
        (
            [day] => Tuesday
            [details] => Array
                (
                    [0] => Array
                        (
                            [theater] => Theater 1
                            [times] => 2:00, 5:00
                        )

                    [1] => Array
                        (
                            [theater] => Theater 2
                            [times] => 4:00, 9:00
                        )

                )

        )

    [2] => Array
        (
            [day] => Wednesday
            [details] => Array
                (
                    [0] => Array
                        (
                            [theater] => Theater 1
                            [times] => 1:00, 7:00, 8:00
                        )

                )

        )

)

内容的提问来源于stack exchange,提问作者user19103974

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 18:43:16