Если просмотреть то, что передается на сервер, то serializeArray() передает все отмеченные пункты, но передает их несколько раз подряд следующим образом (например для поля с name="2"):
form_id:1
1:Александр
2:PHP
2:HTML
2:jQuery
И мне нужно все значения поля 2 собрать в массив.
Проблема решается следующим образом имя селекта должно быть задано как массив name="2[]".
Тогда в контроллере его можно преобразовать в строку следующим образом:
$post = implode(",", $this->input->post($field['id']));