2011-09-21 94 views
0

我有一個CodeIgniter查詢,帶回一個對象數組。我的查詢是查詢多個表都具有相同的字段名稱。所以我使用select來給他們別名。像這樣: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查詢:

$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

你後續的評論來看,這聽起來像你想輸出的所有每項結果的B1場,那麼所有的B2領域。方式一:

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

我不能使用數組,因爲除了這個之外,我還有很多數據要返回。不過謝謝你。 – sehummel