Похоже, $id_units
- это массив значений.
Вы можете попробовать этот код, но он предполагает, что, как и остальные поля ввода, id также является массивом и имеет тот же индекс, что и остальные. Вы не предоставили свою HTML-форму, поэтому я просто догадываюсь .... В любом случае, последний параметр $ this-> db-> where () должен быть одним значением, даже если вы записываете его как массив но одного элемента).
$id_units = $this->input->post('id_units');
$name_un = $this->input->post('name_units');
$price_un = $this->input->post('price_units');
$description_un = $this->input->post('explanation_units');
$ex_un = $this->input->post('addition_units');
$service_un = $this->input->post('checkbox_units');
$data2 = array();
foreach ($name_un as $idx => $name) {
$data2 = array(
'relation' => $id_residence, // Or is it $id_residence[$idx] ?
'name_un' => $name_un[$idx],
'price_un' => $price_un[$idx],
'description_un' => $description_un[$idx],
'ex_un' => $ex_un[$idx],
'service_un' => json_encode($service_un[$idx]),
);
$this->db->update('hotel_units', $data2, array('id' => $id_units[$idx]));
};