簡體   English   中英

如何使用PHP Foreach每次回顯兩個項目?

[英]How to echo two items per one time by using 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;
}

此函數將回顯一個項目以進行循環。

您不能在一次循環迭代中打印兩次。 您可以通過條件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;
}

您可以使用模數運算符進行檢查。 如果你的迭代器是2的倍數,它將輸出適當的元素(它通過檢查余數為零來完成):

public function last_upated_products() {

    $data = $this->newest_products_from_db('products');
    $out = '';
    if ($data) {

        $i = 0; 

        foreach ($data as $k => $row) {

            if( ($i % 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( ($i + 1) % 2 === 0 || ($i + 1) === count($data) ) {
                $out .= '</div>';
            }

            $i++;
        } 
    }
    return $out;
}

請注意,如果您的集合包含不均勻的數字,則最后一位($i + 1) === count($data)非常重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM