2014-03-27 4 views
1
내가 얻을 수 3 개 테이블을 조인하고있어

CodeIgniter의 제이미 Rumbelow의 My_Model를 사용하여 데이터베이스에서 결과를 다음다차원 배열 - PHP - CodeIgniter의

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

이 내 모델에서 컨트롤러에 전달하면 내 결과 집합 모습입니다 클래스 :

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

Engineering 
| 
|_ BSc 
| | 
| |_ Computer Science 
| 
|_ 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 
     ) 
) 

지금, 내 웹 페이지에 나는 다음과 같은 방식으로 설정이 결과를 보여 싶어3210

당신은 나에게 내가보기에 결국 전달할 이러한 레코드를 보유하기 위해 컨트롤러에 배열 (다차원 ??)을 만들어야한다고 제안 할 수 있습니까?

감사합니다.

답변

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; 
} 

대부분의 내부 분기도 배열이므로 배열을 반복 할 때는 인덱스 만 사용해야합니다.