2014-03-27 43 views
1

我加入3個表,以獲得以下使用笨和傑米Rumbelow的My_Model從數據庫結果:多維數組 - PHP - 笨

Career_Option   Course    Specialization 
-------------   -------    -------------- 
Management    MBA     Finance 
Management    BBA     Marketing 
Engineering    BSc     Computer Science 
Engineering    MSc     Bio-Technology 

這是傳遞從我的模型控制器的時候,我的結果集的外觀類:

Array 
(
    [0] => stdClass Object 
     (
      [career_option] => Management 
      [course] => MBA 
      [specialization] => Finance 
     ) 

    [1] => stdClass Object 
     (
      [career_option] => Management 
      [course] => BBA 
      [specialization] => Marketing 
     ) 

    [2] => stdClass Object 
     (
      [career_option] => Engineering 
      [course] => Bsc 
      [specialization] => Computer Science 
     ) 

    [3] => stdClass Object 
     (
      [career_option] => Engineering 
      [course] => MSc 
      [specialization] => Bio-Technology 
     ) 
) 

現在,我的網頁上我想告訴這個結果在下面的方式設置:

Management 
| 
|_ MBA 
| | 
| |_ Finance 
| 
|_ BBA 
    | 
    |_ Marketing 

Engineering 
| 
|_ BSc 
| | 
| |_ Computer Science 
| 
|_ MSc 
    | 
    |_ Bio-Technology 

你能否建議我以這種方式在控制器中創建一個數組(多維?)以保存我最終會傳遞給我的視圖的這些記錄?

謝謝!

回答

0

說,例如,你的陣列是在一個名爲$results變量,你可以做以下

$aData['careerOptions'] = array(); 
foreach($results as $result) { 
    if(!in_array($result->career_option, $aData['careerOptions'])) { 
     $aData['careerOptions'][] = $result->career_option; 
    } 
    if(!in_array($result->course, $aData['careerOptions'][$result->career_option])) { 
     $aData['careerOptions'][$result->career_option][] = $result->course; 
    } 
    if(!in_array($result->specialization, $aData['careerOptions'][$result->career_option][$result->course])) { 
     $aData['careerOptions'][$result->career_option][$result->course][] = $result->specialization; 
    } 
} 

然後,你可以通過做

$this->load->view('path/to/view', $aData); 

一旦你的觀點傳遞$aData你的看法,你將有機會獲得$careerOptions,這將包含您的陣列

+0

非常感謝! – whitecollar

0

這是否適合您?


function tree_from_rows($rows) 
{ 
    $tree = array(); 
    foreach($rows as $row) { 
     $ref =& $tree; 
     foreach($row as $value) { 
      if (!array_key_exists($value, $ref)) { 
       $ref[$value] = array(); 
      } 
      $ref =& $ref[$value]; 
     } 
    } 
    return $tree; 
} 

請注意,最內部的分支也是數組,因此迭代數組時只需要使用索引。