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

PHP如何根据表单问题数量动态调用array_merge合并多个数组

可行解决思路

你之前的写法问题在于错误地用字符串拼接的方式生成array_merge的参数,PHP不支持直接把拼接的字符串表达式当函数参数执行。你只需要先把所有待合并的q系列数组收集到一个容器数组中,再动态传入array_merge即可。

方法1:基于你已有的$tmp计数实现(适配PHP 5.6及以上版本)

// 收集所有待合并的q系列数组
$toMerge = [];
for ($k = 1; $k <= $tmp; $k++) {
    // 加入存在性判断,避免下标不存在时报错
    if (isset($data["q{$k}"]) && is_array($data["q{$k}"])) {
        $toMerge[] = $data["q{$k}"];
    }
}
// 使用展开运算符把容器数组拆分为多个参数传入array_merge
$results = array_merge(...$toMerge);

方法2:低PHP版本兼容方案

如果你的运行环境PHP版本低于5.6,不支持展开运算符,可以用call_user_func_array实现动态传参:

// 前面收集$toMerge的代码和方法1一致
$results = call_user_func_array('array_merge', $toMerge);

方法3:无需提前统计$tmp的简化方案

你可以直接遍历$data匹配q开头+数字的键名,避免计数错误导致漏合并/多合并:

$toMerge = [];
foreach ($data as $key => $value) {
    // 正则匹配q+纯数字的键名
    if (preg_match('/^q\d+$/', $key) && is_array($value)) {
        $toMerge[] = $value;
    }
}
$results = array_merge(...$toMerge);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:15:03