2012-06-22 34 views
0

我有一个名为Categories的数据库表。我想创建一个包含数据库中所有类别的表单下拉菜单。我的解决方案是创建一个关联数组并将其添加到form_dropdown()函数的第二个参数中。我的结果是一个不需要的多维数组。Codeigniter从数据库创建关联数组并在下拉菜单中使用

型号:

function list_categories() 
    { 
     $user_id = $this->tank_auth->get_user_id(); 

     $this->db->where('user_id', $user_id); 
     $this->db->order_by("date_created", "desc"); 
     $query = $this->db->get('categories'); 
     return $query;  
    } 

查看:

//create array 
$categories = array(); 

if ($query->num_rows() > 0) 
{ 
    $categories = $query->result_array(); 
} 

//create dropdown 
echo form_dropdown('category', $categories, $date_created); //selected value based date created 

的代码给出了一个多维数组

Array ( 
[0] => Array ([cat_id] => 27 [user_id] => 3 [cat_title] => Some Title [status] => 0 [date_created] => 2012-06-22 18:48:14) 

[1] => Array ([cat_id] => 24 [user_id] => 3 [cat_title] => Title [status] => 0 [date_created] => 2012-06-20 19:37:47) 

[2] => Array ([cat_id] => 23 [user_id] => 3 [cat_title] => Another Title [status] => 0 [date_created] => 2012-06-20 18:25:45) 

etc... 

我怎么能代替上面的Associativ结果e数组,其中ID键是类别标识并且值类别标题?

实施例:

$categories = array(
    "23" => "some title", 
    "14" => "another title", 
); 

回答

5

用一个例子SOLUTION:

$categories=array(
'0'=>array("cat_id"=>"27","cat_title"=>"some title"), 
'1'=>array("cat_id"=>"24","cat_title"=>"Title"), 
'2'=>array("cat_id"=>"23","cat_title"=>"Another Title"), 
); 

    foreach($categories as $catID=>$categoriesData){ 
     $finalArray[$categoriesData["cat_id"]]=$categoriesData; 
    } 

print_r($finalArray); 


/* 
OUTPUT 

Array 
(
    [27] => Array 
     (
      [cat_id] => 27 
      [cat_title] => some title 
     ) 

    [24] => Array 
     (
      [cat_id] => 24 
      [cat_title] => Title 
     ) 

    [23] => Array 
     (
      [cat_id] => 23 
      [cat_title] => Another Title 
     ) 

) 
*/ 
+0

谢谢!这很好地工作 – CyberJunkie

1

做类似:

foreach($categories as $category){ 
    $category_array[$category['cat_id']] = $category['cat_title']; 
} 

$categories = $category_array; 

这将分配的类别ID作为数组的键,和标题作为值,在下拉使用。

+0

感谢你的工作代码! – CyberJunkie

0

您可以使用_list()函数在html_helper使从多维数组

0

使用这种简单的方法嵌套列表,

$query = $this->db->get_where('table', array('table_id' => $id)); 

     $queryArr = $query->result();   

     foreach ($queryArr[0] as $key=>$val) 
     { 
      $row[$key]=$val; 
     } 

print_r($row); //this will give associative array 
相关问题