2011-12-26 9 views
27

Witam chciałbym zrobić somthing tak:badanie liczby w pętli

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

w gałązce:

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

ale jak mogę mieć zmienną ewoluuje z pętli?

Odpowiedz

56

Widocznie gałązka definiuje pewne loop variables wewnątrz pętli for:

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

Jeśli używamy go do stylizacji można zrobić:

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

Dzięki, dokładnie to, czego szukałem. Jednak mała poprawka: Powinna to być 'cycle (['even', 'odd'], loop.index0)' ponieważ 'loop.index0' jest używane. Kiedy używasz 'loop.index0', mówisz, że masz wiersz" zerowy ", a zero to liczba parzysta. Tak więc, z tą poprawką twój zerowy rząd jest równy, pierwszy wiersz jest nieparzysty, drugi rząd jest równy, itd. – cmt

+0

Dosyć schludne rozwiązanie, szczególnie jeśli potrzebujesz czegoś innego niż "parzysty i nieparzysty", ale na przykład "1, 2 i 3 ". A co z wydajnością? Czy użycie '{% if loop.index0 nawet%}' jest szybsze niż przechodzenie przez listę łańcuchów z '{{cycle (['even', 'odd'], loop.index0)}}'? Byłoby interesujące dowiedzieć się, czy może istnieć jakikolwiek powód, aby preferować jedno rozwiązanie nad drugim lub jeśli po prostu nie ma to znaczenia w końcu. – Arvid

Powiązane problemy