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

PHP多数组合并问题求助:使用array_merge等方法未成功

如何合并两个时间数组?

我目前得到的输出是两个数组:

array(4) { [0]=> string(5) "12:00" [1]=> string(5) "12:20" [2]=> string(5) "12:40" [3]=> string(5) "01:00" } 
array(2) { [0]=> string(5) "02:00" [1]=> string(5) "02:20" }

我的调用代码如下:

$t_i=$this->Hospital_model->get_time_interval_break_split( $t_i_b->start, $t_i_b->end, $consult_time); 
$output =array_merge($t_i);

模型代码如下:

public function get_time_interval_break_split($start_time,$end_time,$consult_time) { 
    $array = array(); 
    $time_diff = $consult_time * 60; 
    if(!empty($start_time)) { 
        for ($i=strtotime($start_time); $i<=strtotime($end_time); $i += $time_diff) { 
            $array[] = date("h:i", $i); 
        } 
    } 
    return $array; 
}

我想要将这两个数组合并为一个,尝试过使用array_map、array_merge等方法但未成功,恳请帮忙解决该问题。


问题分析与解决方案

你的核心问题是调用array_merge的方式不正确:从输出看,你应该是得到了一个包含两个待合并数组的二维数组(比如$t_i是[数组A, 数组B]),但array_merge需要接收多个独立的数组作为参数,而不是一个包含数组的数组。

下面是几种可行的解决办法:

1. 可变参数展开(推荐,PHP 5.6+)

使用PHP的展开运算符...,把二维数组中的元素拆成独立参数传给array_merge:

// 假设$t_i是包含两个待合并数组的二维数组
$output = array_merge(...$t_i);

2. 兼容低版本PHP的写法

如果你的PHP版本低于5.6,用call_user_func_array来间接调用array_merge,自动把二维数组的元素作为参数传入:

$output = call_user_func_array('array_merge', $t_i);

3. 直接传入两个独立数组(如果是分别生成的)

如果是你调用了两次get_time_interval_break_split得到两个独立数组(比如$array1和$array2),直接把它们作为参数传入array_merge即可:

$array1 = $this->Hospital_model->get_time_interval_break_split($t_i_b1->start, $t_i_b1->end, $consult_time);
$array2 = $this->Hospital_model->get_time_interval_break_split($t_i_b2->start, $t_i_b2->end, $consult_time);
$output = array_merge($array1, $array2);

为什么你之前的尝试失败?因为array_merge($t_i)只传入了一个参数(二维数组),array_merge会直接返回这个参数本身,不会自动合并里面的子数组。只有当你把每个需要合并的数组作为单独参数传入时,它才会把所有元素合并成一个一维数组。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:45:26