我使用foreach在表单上保存多个值,提交到数组中。在php 8更新之前,下面的逻辑运行良好。
请让我知道需要做些什么才能使它再次发挥作用。
$batch = $this->input->post('batch_id');
$activity_selected = $this->input->post('activity_selected');
$characteristics = array_values($this->input->post('characteristics'));
$user_id=$this->session->userdata('userid');
foreach($activity_selected as $key => $val)
{
$dataSet[] = array (
'batch_id' => $batch_id,
'activity_id' => $activity_selected[$key],
'characteristics' => implode(',', $characteristics[$key]),
'user_id' => $user_id,
);
}
$this->person->insertdata($dataSet,$batch);
得到这个错误
错误- 2222 10月2121 11:47->严重程度:编译错误->不能使用[]读取D:\xampp\htdocs** 122错误- 2222 10月2121 11:47:32 ->严重度:错误->严重度:错误->异常:内爆():参数#2 ($array)必须是类型?数组,给定的字符串D:\xampp\htdocs** 108错误- 2222 Oct 2121 11:47:32 ->严重性:错误->异常:():参数2 ($array)必须是类型数组?给定D的字符串:\xampp\htdocs* 108
发布于 2021-10-22 10:23:49
在PHP 8之前,下面的代码将只抛出一个警告并返回NULL
$characteristics['key'] = 'string';
$key = 'key';
var_dump(implode(',', $characteristics[$key]));
// Warning: implode(): Invalid arguments passed in /in/q6EPW on line 6
// NULL
由于PHP 8,警告现在被提升为致命错误。
Fatal error: Uncaught TypeError: implode(): Argument #2 ($array) must be of type ?array, string given
有几种方法可以解决这个问题,最简单的方法是检查值是否为数组,如果不是传递空数组。
implode(',', is_array($characteristics[$key]) ? $characteristics[$key] : []);
// string(0) ""
发布于 2021-10-22 10:51:14
您可以对代码做大量的工作,您可以通过使用foreach($items as $key => $value)和使用$key而不是$i来消除拥有增量变量($value)的需要。
https://stackoverflow.com/questions/69675020
复制相似问题