2011-09-21 8 views
0

개체 배열을 가져 오는 CodeIgniter 쿼리가 있습니다. 내 쿼리는 모두 동일한 필드 이름을 가진 여러 테이블을 쿼리합니다. 그래서 나는 그 (것)들에게 별명을주기 위하여 선택을 사용하고있다. 이렇게 :PHP 객체 지향 foreach 루프

SELECT t1.platform_brief b1, t2.platform_brief b2 

여기서 t1과 t2는 내 두 테이블입니다. print_r'd가 다음과 같은 객체를 반환 할 때 내 배열 :

Array 
(
    [0] => stdClass Object 
     (
      [b1] => Lorem ipsum 
      [b2] => 
     ) 

    [1] => stdClass Object 
     (
      [b1] => 
      [b2] => Sic dolor sit 
     ) 

) 

내 foreach에서 내가 그들을 에코 할 때 어떻게합니까? 나는 이런 식으로 시도했지만 작동하지 않았다 :

<?php foreach ($lasers as $laser) { 
echo $laser->? 
?> 

물음표 대신 무엇을 넣을 까?

이 편집 : 여기

내 CI 쿼리입니다 : 당신이 출력에 각 결과에 대한 모든 B1 필드를 원하는처럼 후속 의견으로 판단

$this->db->select('ils1.platform_brief b1, ils2.platform_brief b2'); 
$this->db->where('ils1.language', $lang); 
$this->db->or_where('ils2.language', $lang); 
$this->db->join('all_platform_ils975 ils2', 'ils2.laser_id = c.laser_id', 'left'); 
$this->db->join('all_platform_ils1275 ils1', 'ils1.laser_id = c.laser_id', 'left'); 
$this->db->join('all_lasers l', 'l.laser_id = c.laser_id', 'inner'); 
return $this->db->get($lang . '_configure_lasers c')->result(); 
+2

무엇이'$ lasers'입니까? – hakre

+2

이 질문은 잘못 표현되었습니다. 첫 번째 레코드에서 b1이 비어 있고 두 번째 레코드에서 b2가 비어있는 이유는 무엇입니까? 이 두 레코드는 어떻게 관련이 있으며, 두 테이블이 왜 비어있는 필드입니까? –

+0

이것이 나의 참여가 결합 된 방식입니다. 같은 필드에 가입하려면 어떻게해야합니까? 그런 식으로하면 마지막 결과 만 얻습니다. – sehummel

답변

0

당신 각 개체 이상으로 반복 수 :

foreach ($lasers as $laser) { 
    foreach($laser as $field) { 
     if(!empty($field)) echo $field; 
    } 
} 

그러나, 대신 당신은 더 나은 귀하의 요구를 충족시킬 수있는 데이터베이스 설계/쿼리 디자인을 변경해야합니다.

+0

내 쿼리를 변경해야한다고 생각하지만, 어떻게 해야할지 잘 모르겠습니다. 위에 게시되었습니다. 제안 할 것이 있습니까. 테이블을 다시 디자인하기에는 너무 늦었습니다. – sehummel

+0

테이블을 변경할 수 없다면 테이블을 "대체"하는 뷰를 생성하십시오. http://dev.mysql.com/doc/refman/5.0/en/views.html – hakre

+0

뷰를 쿼리 할 수 ​​있습니까? 그것은 유망한 것으로 들립니다. – sehummel

2

, 그 소리, 그 다음 모든 B2 전지. 한 가지 방법 :

 
foreach(array('b1', 'b2') as $fields) { 
    foreach($lasers as $laser) { 
     echo $laser->$field, '<br>'; 
    } 
} 
+0

배열 이외의 다른 데이터를 반환하기 때문에 배열을 사용할 수 없습니다. 그러나 어쨌든 고마워요. – sehummel