Лично я ненавижу делать предположения в моих моделях о том, как будут использоваться мои данные, поскольку это работа контроллера. Если вы добавите MY_array_helper.php и вставите его в:
function array_to_select() {
$args = func_get_args();
$return = array();
switch(count($args)):
case 3:
foreach ($args[0] as $itteration):
if(is_object($itteration)) $itteration = (array) $itteration;
$return[$itteration[$args[1]]] = $itteration[$args[2]];
endforeach;
break;
case 2:
foreach ($args[0] as $key => $itteration):
if(is_object($itteration)) $itteration = (array) $itteration;
$return[$key] = $itteration[$args[1]];
endforeach;
break;
case 1:
foreach ($args[0] as $itteration):
$return[$itteration] = $itteration;
endforeach;
break;
default:
return FALSE;
break;
endswitch;
return $return;
}
Тогда вы можете сделать что-то вроде этого:
function add_content() {
$data = array();
$this->is_logged_in();
$this->load->model('category_model');
$this->load->helper('array');
$data['select_options'] = array_to_select($this->category_model->get_all_online(), 'id', 'title');
$this->load->view('admin/content/add_content', $data);
}
Это поддерживает многомерные массивы, передавая один или два ключа, или одномерные массивы, используя значение в качестве значения и ключа.
Например: array_to_select (array ('value1', 'value2')) дает массив ('value1' => 'value1', 'value2' => 'value2')