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

Codeigniter框架下函数间传递数组并合并数组的问题求解

问题根因

报错的核心原因是payment_page方法的入参默认值设置错误:你给$data设置的默认值是空字符串'',array_merge要求传入的参数必须为数组,当没有传参直接调用该方法(比如你表单action直接指向payment_page路由)时,$data就会取默认的字符串值,触发类型不匹配报错。
另外方法内单独写的$data;属于无意义冗余代码,不产生任何实际作用。

报错原文:
Severity: Warning
Message: array_merge(): Expected parameter 1 to be an array, string given

修复方案

1. 调整入参默认值+增加类型校验

修改payment_page方法的参数默认值为空数组,同时增加类型校验兜底,避免非数组参数传入报错:

public function payment_page($data = []){
    // 类型兜底,确保$data一定是数组
    if (!is_array($data)) {
        $data = [];
    }
       
    $other_data = [
        'cardname' => $this->input->post('cardname'),
        'cardno' => $this->input->post('cardno'),
        'cardcvv' => $this->input->post('cardcvv'),
        'cardmonth' => $this->input->post('cardmonth'),
        'cardyear' => $this->input->post('cardyear')
    ];
        
    $main_data = array_merge($data, $other_data);
    // 后续可按需处理$main_data,比如传入视图、存入数据库等
}

2. 调整业务路由逻辑(按需)

你当前表单的action直接配置为Welcome/payment_page,这种场景下userid、payment两个参数不会被传入payment_page,如果你的业务流程需要先经过payment方法处理参数,建议将表单action改为指向Welcome/payment,处理完成后再调用payment_page方法,或者用session存储中间参数避免数据丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:12:04