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

CodeIgniter 3中使用set_value时出现数组转字符串转换错误

解决CodeIgniter中数组形式表单字段的set_value报错问题

你遇到的“Array to string conversion”错误,原因是当表单字段name为speed[]这种数组格式时,直接调用set_value('speed[]')会返回整个数组,而echo无法直接输出数组,因此触发了转换错误。

正确的实现方式分两种场景:

1. 固定数量的数组字段

如果表单是固定几个带索引的输入框,直接给name指定具体索引,同时在set_value里对应索引即可:

<input type="text" name="speed[0]" value="<?php echo set_value('speed[0]'); ?>" />
<input type="text" name="speed[1]" value="<?php echo set_value('speed[1]'); ?>" />

这样set_value会返回单个字段的值,不会返回数组,就能正常保留输入内容。

2. 动态生成的数组字段

如果是用户可动态添加的多个speed[]输入框,需要结合循环处理:

  • 先在控制器里获取提交的数组(为空时设默认空数组):
$speed_list = $this->input->post('speed') ?? [];
  • 然后在视图里循环生成输入框,给每个输入框对应索引的set_value:
<!-- 显示已提交的输入内容 -->
<?php foreach ($speed_list as $idx => $val): ?>
    <input type="text" name="speed[]" value="<?php echo set_value('speed[' . $idx . ']'); ?>" />
<?php endforeach; ?>

<!-- 额外显示几个空输入框(示例默认补到3个) -->
<?php $need_add = 3 - count($speed_list); ?>
<?php for ($i = 0; $i < $need_add; $i++): ?>
    <input type="text" name="speed[]" value="<?php echo set_value('speed[' . (count($speed_list) + $i) . ']'); ?>" />
<?php endfor; ?>

补充:数组字段的验证规则设置

要确保每个数组元素都能被验证,规则可以这样写:

$this->form_validation->set_rules('speed[]', '速度值', 'required|numeric', [
    'required' => '请填写速度值',
    'numeric' => '速度必须是有效数字'
]);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:10:31