2011-12-26 38 views
27

Xin chào tôi muốn làm somthing như thế:Một số trong một vòng lặp

<?php $count = 0; foreach($a as $v): $count++; ?> 
    <?php if ($count%2 == 0): ?> 
    ... 
    <?php endif; ?> 
<?php endforeach; ?> 

trong cành lá:

{% for v in a %} 
    {% if ??? is even %} 
    ... 
    {% endif %} 
{% endfor %} 

nhưng làm thế nào tôi có thể có một biến phát triển với vòng lặp?

Trả lời

56

Rõ ràng cành định nghĩa một số loop variables bên trong cho vòng lặp:

{% for v in a %} 
    {% if loop.index0 is even %} 
     ... 
    {% endif %} 
{% endfor %} 
24

Nếu bạn sử dụng nó cho việc tạo kiểu bạn có thể làm:

{% for v in a %} 
    <div class="link {{ cycle(['even', 'odd'], loop.index0) }}"> 
    </div> 
{% endfor %} 
+1

Cảm ơn, chính xác những gì tôi đang tìm kiếm. Tuy nhiên, chỉ một sửa chữa nhỏ: Nó phải là 'cycle (['even', 'odd'], loop.index0)' vì 'loop.index0' được sử dụng. Khi bạn sử dụng 'loop.index0', bạn đang nói rằng bạn có hàng" zeroth "và số không là số chẵn. Vì vậy, với điều này sửa chữa hàng zeroth của bạn là ngay cả, hàng đầu tiên là lẻ, hàng thứ hai là thậm chí, vv – cmt

+0

giải pháp khá gọn gàng, đặc biệt là nếu bạn cần một cái gì đó khác với "thậm chí và lẻ", nhưng ví dụ "1, 2 và 3 ". Bây giờ, những gì về hiệu suất? Có thể sử dụng '{% if loop.index0 thậm chí%}' nhanh hơn đi xe đạp qua danh sách các chuỗi với '{{cycle (['even', 'odd'], loop.index0)}}'? Sẽ rất thú vị nếu biết có thể có bất kỳ lý do nào để thích một giải pháp hơn một giải pháp khác hoặc nếu nó không quan trọng cuối cùng. – Arvid

Các vấn đề liên quan