消息:implode():在codeigniter中传递的参数无效

时间:2017-11-29 11:08:34

标签: php jquery codeigniter

代码:

$item_des = implode(',',$this->input->post('item_des'));
$item_cost = implode(',',$this->input->post('item_cost'));
$service_cost = implode(',',$this->input->post('service_cost'));
$total_cost = implode(',',$this->input->post('total_cost'));

$data = array(
            'item_des' => $item_des,
            'item_cost' => $item_cost,
            'service_tax' => $service_cost,
            'total_cost' => $total_cost,
            );

            print_r($data);
$query = $this->db->insert('table_name',$data);

在这段代码中,我有一个表单,我使用jquery / ajax来插入表单值但是当我使用implode函数时它会引发错误信息,即

Message: implode(): Invalid arguments passed

那么,我该如何解决这个问题?请帮助我。

谢谢

3 个答案:

答案 0 :(得分:2)

您可以将$ a转换为数组,以确保在使用implode

时始终使用数组
implode(',', (array) $a);

其中,

$a=$this->input->post('item_des');

等其他案例。试试这个肯定会运行!

答案 1 :(得分:0)

尝试打印每个变量

var_dump($this->input->post('name')); //all these should be array

最有可能这些字段不是数组。你有隐藏的领域吗?或者你的HTML应该是这样的:

<input name="item_des[]" /> <!-- name should be an array instead of a string name, as shown here -->
<input name="item_des[]" /> <!-- there could be multiple inputs for each of the array you want to `implode` -->

现在HTML将在post中返回一个数组。请Implode()期望数组将其转换为字符串。

答案 2 :(得分:0)

此错误表示您的变量未定义或未定义数组。 在处理数据之前,请确保按照您的想法定义它们。

您可以使用isset()确保定义变量,并使用is_array()确保它们是数组。一旦你知道你的变量是什么,你可以按照它们应该的方式对待它们(可能发送错误的你期望一个正确定义的数组)。

将它们转换为阵列不会对您有所帮助,因为这意味着数据不是您所排除的。如果你的代码可能会有进一步的问题,那么其余的。