在foreach循环中输出计数数字以显示正确的行号

时间:2013-12-06 21:48:06

标签: php codeigniter foreach

从数组中输出每一行真实计数器的最佳做法是什么?我有来自数据库的检索用户的对象数组,我回调到<table />

<tbody>
    <?php $i = 1;?>
    <?php foreach($members as $member):?>
    <tr>
        <td class="column-counter">
            <?php echo $i;?>
        </td>
        <td class="column-check">
            <input type="checkbox" class="checkbox" name="checked[]" value="<?php echo $member->id;?>" <?php if(intval($member->id) === intval($this->session->userdata('login_status')['id'])):?>disabled<?php endif;?>>
        </td>
        <td class="column-username">
            <?php echo $member->username;?>
        </td>
        <td class="column-email">
            <a href="#send-email"><?php echo $member->email;?></a>
        </td>
        <td class="column-id">
            <?php echo $member->id;?>
        </td>
    </tr>
    <?php $i++;?>
    <?php endforeach;?>
</tbody>

到目前为止我所做的是每次触发循环时$i =1递增。

但问题是,如果我转到第二页,它会再次从“1”开始,而不是让我们说21(如果它每页显示20行)。

如何才能使其正确,以便从上一页的最后一行继续计算?

顺便说一下,如果有帮助,我会使用codeigniter。

====更新====

我在models/members_model.php中使用的模型controllers/members.php检索用户认为此功能与分页混合:

public function members($data = array(), $return_count = FALSE){

    $this->db
        ->select('
            members.id,
            categories.title as role,
            members.catid as role_id,
            members.firstname,
            members.lastname,
            members.username,
            members.email,
            members.status,
            members.image
        ')
        ->join('categories', 'members.catid = categories.id');

    if( empty($data) ){
        // If nothing provided, return everything
        $this->get_members();
    }else{
        // Grab the offset
        if( !empty($data['page']) ){
            $this->db->offset($data['page']);
        }

        // Grab the limit
        if( !empty($data['items']) ){
            $this->db->limit($data['items']);
        }

        if( $return_count ){
            return $this->db->count_all_results($this->_table_name);
        }else{
            return $this->db->get($this->_table_name)->result();
        }
    }

}

1 个答案:

答案 0 :(得分:1)

听起来$data['page']包含您需要的信息,因为这与指定的偏移有关。您没有在全局范围内引用此数组的名称,因此我将在我的答案中调用此$data_array

您可以按如下方式确定$i的起始值

$i = $data_array['page'] + 1;