如何使用PHP Foreach每次回显两个项目?

Hen*_*eak 2 php foreach

我正在使用PHP来回应来自DB的产品.如果我们只使用foreach将得到每个循环一个项目的结果,但实际上我希望它每次回显两个项目,如下所示

这是我的PHP函数,使用foreach从DB获取数据

我用行项目选择包装产品的选择,所以我想呼应块的产品,然后两次将呼应行项目.

示例:row item = 1 then product = 2

public function last_upated_products() {

    $data = $this->newest_products_from_db('products');
    $out = '';
    if ($data) {
        foreach ($data as $k => $row) {

            $out .= '<div class="row item">';

            $out .= '<div class="product">';
            $out .= '<div class="image">';
            $out .= '<a href=""><img src="' . base_url('asset/img/main/9.jpg') . '" alt="img" class="img-responsive"></a>';
            $out .= '<div class="promotion"><span class="discount">' . $row['prod_id'] . '% OFF</span> </div>';
            $out .= '</div>';
            $out .= '<div class="description"><div class="price"><span>$' . $row['prod_price'] . '</span></div><h4><a href="#">' . $row['prod_name'] . '</a></h4>';
            $out .= '<p>' . $row['prod_descrip'] . '</p>';
            $out .= '</div>';
            $out .= '</div>';

            $out .= '</div>';
        }
    }
    return $out;
}
Run Code Online (Sandbox Code Playgroud)

此函数将回显一个项目以进行循环.

Sum*_*mit 6

您不能在一次循环迭代中打印两次.您可以通过条件HTML输出来完成这项工作.考虑一下:

function last_upated_products() {

    $data = $this->newest_products_from_db('products');
    $out = '';
    $counter = 1;
    $length = count($data);
    if ($data) {
        foreach ($data as $k => $row) {

            if ($counter % 2 != 0) {
                $out .= '<div class="row item">';
            }

            $out .= '<div class="product">';
            $out .= '<div class="image">';
            $out .= '<a href=""><img src="' . base_url('asset/img/main/9.jpg') . '" alt="img" class="img-responsive"></a>';
            $out .= '<div class="promotion"><span class="discount">' . $row['prod_id'] . '% OFF</span> </div>';
            $out .= '</div>';
            $out .= '<div class="description"><div class="price"><span>$' . $row['prod_price'] . '</span></div><h4><a href="#">' . $row['prod_name'] . '</a></h4>';
            $out .= '<p>' . $row['prod_descrip'] . '</p>';
            $out .= '</div>';
            $out .= '</div>';


            if ($counter % 2 == 0 || $length == $counter) {
                $out .= '</div>';
            }

            $counter++;
        }
    }
    return $out;
}
Run Code Online (Sandbox Code Playgroud)

  • @Sumit我道歉,我不应该在咖啡前进行stackoverflow.我看到了底部并且没有意识到你以1而非零开始计数器. (2认同)