PHP面向对象的foreach循环

时间:2011-09-21 23:33:11

标签: php mysql codeigniter

我有一个CodeIgniter查询,它会返回一个对象数组。我的查询是查询多个具有相同字段名称的表。所以我使用select给它们别名。像这样:

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 个答案:

答案 0 :(得分:2)

根据您的后续评论判断,您似乎想要输出每个结果的所有b1字段,然后输出所有b2字段。一种方式:

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

答案 1 :(得分:0)

可以迭代每个对象:

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

但是,您应该更改数据库设计/查询设计以更好地满足您的需求。