2013-03-15 58 views
0

我希望在使用Codeigniter form_dropdown函數時按如下方式將this array轉換爲optgroup。使用codeigniter將多維數組轉換爲使用optgroup的下拉組件

<select> 
    <optgroup label="Thomas More Kempen"> 
    <option value="22">D001</option> 
    <option value="23">D002</option> 
    </optgroup> 
    <optgroup label="Thomas More Geel"> 
    <option value="2">G001</option> 
    <option value="8">A102</option> 
    </optgroup> 
</select> 
value is lokaalId 

到目前爲止,我可以與對象的廣告chlildren OPTGROUP顯示「托馬斯更多...」,但至今沒有骰子。

解決: 我改變了我從DB我的數據的方式:

function getAllMetCampus() { 
     $this->load->model('campus_model'); 
     $alleCampussen = $this->campus_model->getAll(); 

     foreach ($alleCampussen as $campus) { 
      $lokalen = $this->getAllOnCampusId($campus->id); 
      foreach($lokalen as $key=>$value){ 
       unset($lokalen[$key]); 
       $lokalen[$value->lokaalId] = $value->lokaalNr; 
      } 
      $result[$campus->naam] = $lokalen; 
     } 
     return $result; 
    } 

然後我echo form_dropdown($result);

+1

什麼是你正在嘗試的代碼...請添加到你的問題。 – djjjuk 2013-03-15 14:11:34

回答

1

的輔助功能正在尋找主陣列內部數組不stdObjects爲您的鏈接輸入顯示,查看源代碼:form_helper:336

你將不得不轉換你的輸入,可能是這樣的:

$options = array_map(function($item){ 
    return (array)$item; 
}, $options); 

或者因爲你的投入似乎是從一個數據庫查詢結果來了,當你獲取它們使用result_array()row_array()方法,而不是result()row()

你應該得到這樣的錯誤,而無需轉換:

PHP Catchable fatal error: Object of class stdClass could not be converted to string 
+0

謝謝,你幫助我的方式正確的答案。感謝你,我正在尋找正確的方向。 – Whitebird 2013-03-17 13:48:01

0

Optgroups的arent難在笨:

,如果你想這樣的:

<select> 
    <optgroup label="Thomas More Kempen"> 
    <option value="22">D001</option> 
    <option value="23">D002</option> 
    </optgroup> 
    <optgroup label="Thomas More Geel"> 
    <option value="2">G001</option> 
    <option value="8">A102</option> 
    </optgroup> 
</select> 

你可以簡單的循環你的陣列是這樣的:

function getAllMetCampus() { 
     $this->load->model('campus_model'); 
     $alleCampussen = $this->campus_model->getAll(); 
     $options = array(); 

     foreach ($alleCampussen as $campus) { 
      $options[$campus->naam] = array(); 

      $lokalen = $this->getAllOnCampusId($campus->id); 
      foreach($lokalen as $lokaal){ 
       $options[$campus->naam][$lokaal->lokaalId] = $lokaal->lokaalNr 
      } 
     } 
     return $options; 
    } 

讓我想知道,爲什麼你有校園和lokaal的ID, 校園裏有更多的同名同行嗎,每個校園裏有相同數量的lokalen?它對我來說看起來像是一個不好的主鍵,你能評論一下嗎?

+0

謝謝你的回答,問題已經有四年了,而我已經畢業了。交付的數據模型是類分配的一部分。 – Whitebird 2017-08-05 09:07:40