Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak sprawdzić czy następna wartość jest taka sama
Forum PHP.pl > Forum > PHP
silverwind
Jak zrobić test, który sprawdza czy kolejna wartość w pętli foreach jest taka sama. Jest tak funkcja same as w twigu ale nie mam pomysłu jak to zrobić
Crozin
Zależy po czym iterujesz, ale jeżeli jest to zwykła tablica z indeksami numerycznymi, to po prostu sprawdź czy nie jesteś na ostatnim elemencie tablicy i porównaj aktualny element z elementem o kluczu o 1 większym: http://twig.sensiolabs.org/doc/tags/for.html -> zwróć uwagę na zmienną loop.
silverwind
Nie bardzo wiem jak to zrobić. Według twojej rady może jakiś przykład
  1. {% if loop.index is not loop.last%}
  2. {%if loop.index is same as loop.index +1 %}
  3. {% endif %}
  4. {% endif %}
W twoim rozwiązaniu porównuje index a nie wartości. Chodzi mi, aby wyświetlało mi pierwszy element w tabeli a jak jest taki samy to pustą komórkę. Zrobiłem tak ale mi nic nie wyświetla teraz
  1. if details.o_name is same as(details.o_name) %}#}
  2. {# <th class="text-center success"></th>#}
nospor
Ty nie masz sprawdzac czy nastepna jest taka sama. Ty masz sprawdzasz czy poprzednia byla taka sama i jak tak to walic PUSTO.
W tym celu zapisujesz aktualny stan iteracji w zmiennej (http://twig.sensiolabs.org/doc/tags/set.html) a linijke wczesniej porownujesz akutalny stan do tej zmiennej .Jak sa takie same znaczy ze poprzednia byla taka sama
silverwind
  1. {% set foo = details.o_name%}
  2. {% if foo == details.o_name %}
  3.  
  4. <th class="text-center "></th>
  5. {% else %}
  6. <th class="text-center ">{{details.o_name}}</th>
  7. {% endif %}


Zrobiłem tak ale teraz mam wszystkie puste ?
nospor
Logika sie klania...
Najpierw przypisujesz potem sprawdzasz. Toz logiczne ze po przypisaniu beda takie same

Napisalem wyraznie, ze LINIJKE WCZESNIEJ masz sprawdzac a nie pozniej
silverwind
Nie wiem może jestem głupi i nie logiczny, ale nie mam już pomysłu. Tak to ma być
  1. {% if foo == details.o_name %}
  2. {% set foo=' '%}
  3. {% for details in expenses1 %}
  4. {% set foo = details.o_name%}
  5. {% endfor %}
  6.  
  7.  
nospor
Miales taki kod:
{% set foo = details.o_name%}
{% if foo == details.o_name %}

<th class="text-center "></th>
{% else %}
<th class="text-center ">{{details.o_name}}</th>
{% endif %}

jedyne co miales zrobic, to przeniesc set za IF:
{% if foo == details.o_name %}

<th class="text-center "></th>
{% else %}
<th class="text-center ">{{details.o_name}}</th>
{% endif %}
{% set foo = details.o_name%}


Dodatkowo przed PETLA daj
{% set foo = '' %}
aby foo mialo jakas poczatkowa wartosc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.