2012-01-06 53 views
23

Tôi cần một chút trợ giúp với vòng lặp foreach.PHP - Thêm số div vào vòng lặp foreach 4 lần

Về cơ bản những gì tôi cần làm là quấn một div xung quanh đầu ra của dữ liệu mỗi 4 vòng.

Tôi có vòng lặp sau:

foreach($users_kicks as $kicks) { 
    echo $kicks->brand; 
} 

Đối với mỗi 4 lần nó echos đó ra tôi muốn quấn nó trong một cái ở cuối nó sẽ trông giống như vậy:

<div> 
    kicks brand 
    kicks brand 
    kicks brand 
    kicks brand 
</div> 
<div> 
    kicks brand 
    kicks brand 
    kicks brand 
    kicks brand 
</div> 
<div> 
    kicks brand 
    kicks brand 
    kicks brand 
    kicks brand 
</div> 

và Sớm.

Chúc mừng

Trả lời

94
$count = 1; 
foreach($users_kicks as $kicks) 
{ 
    if ($count%4 == 1) 
    { 
     echo "<div>"; 
    } 
    echo $kicks->brand; 
    if ($count%4 == 0) 
    { 
     echo "</div>"; 
    } 
    $count++; 
} 
if ($count%4 != 1) echo "</div>"; //This is to ensure there is no open div if the number of elements in user_kicks is not a multiple of 4 
16

Hãy thử nhà điều hành% modulus.

$i=1; 
//div begins 
foreach($users_kicks as $kicks) { 
    if($i % 4 ==0) 
    { 
     //div ends 
     //div begins 
    } 
    echo $kicks->brand; 
    $i++; 
} 
//div ends 
+1

này làm việc rất lớn đối với tôi cổ vũ –

0

Một thay đổi nhỏ để trả lời AVD để đảm bảo không có DIV trống nếu mảng trống hoặc nó đếm được yếu tố của 4 ...

if($lastRec=count($user_kicks)){ 
    echo '<div>'; 
    $i=1; 
    foreach($users_kicks as $kicks) { 
    if(($i % 4 == 0) && ($i<$lastRec)) echo '</div><div>'; 
    echo $kicks->brand; 
    $i++; 
    } 
    echo '</div>'; 
} 
79

Câu trả lời này là rất muộn - nhưng trong trường hợp mọi người nhìn thấy nó - đây là giải pháp sạch hơn, không có bộ đếm lộn xộn và các báo cáo if:

foreach (array_chunk($users_kicks, 4, true) as $array) { 
    echo '<div>'; 
    foreach($array as $kicks) { 
     echo $kicks->brand; 
    } 
    echo '</div>'; 
} 

Bạn có thể đọc cơn array_chunk on php.net

1

bạn cũng có thể sử dụng array_chunk mà cắt mảng bởi khối

$blocks = array_chunk($users_kicks, 4); 
foreach ($blocks as $block) { 
    echo '<div>'; 
    foreach ($block as $kicks) { 
     echo $kicks->brand; 
    } 
    echo '</div>'; 
} 
Các vấn đề liên quan