cyklus s pevným počtom iterácií:
{% for i in 0..5 %}
namiesto 0 a 5 môžu byť hocijaké čísla, akurát prvé číslo musí byť menšie alebo rovné než druhé.
v prípade cyklusu riadeného podľa veľkosti poľa:
{% for i in myarray %}
pričom myarray je názov poľa v JSONe, podobne jak cisla v mojom priklade. v prípade že sa poľe nachádza v nejakom objekte. Použiteje v cykle myobj.myarray pričom myobj je názov objektu.
cykli môžene zanorovať v prípade ak by ste prechádzali poľom vo vnútri iného poľa. Díky pričom v zanorenom cykli môžete použiť index nadriadeného cyklu ako podmienku, díky tomu jde vytvoriť prkotniky ako: https://www.youtube.com/watch?v=q-D8BKfYKn4
v prípade podmienok môžete použiť rôzne porovnania "==, "<" ">" "<=" ">=" atd... spájať podmienky môžete skrz OR a AND. Pričom pri or stačí aby platila jedna podmienka a bude vykonaná if vetva, v prípade and musia byť všetky platné, ak neni platná vykonáva sa else vetva (ak existuje).
v prípade samotnej interpolácia, tá vkladá do výstupu hodnoty z JSONu. Tam sa odkazuje buď priamo hodnota: napríklad pozdrav v mojom prípade. Alebo objekt v ktorej je hodnota, to je ta bodka medzi názvami, tie objekty môžu byť rôznak vnorené takže existuje i pojistka.rizika.doplnkova.nazev (trocha som to skrátil) když použijete toto, to načitáva hodnotu "mojahodnota" z takéhoto JSONu:
{
"pojista" : {
"rizika" {
"doplnkova": {
"nazev": "mojahodnota"
}
}
}
}
V prípade poľa používať hranaté zátvorky v interpolácii. Napríklad obj.array[i].premenna to je v JSONe:
{
"obj" : {
"arrray": [
{
"premenna": "mojahodnota",
"dalsiapremenna" :"hodnota2"
},
{
"premenna": "ahoj",
"dalsipremenna": "cukor"
}
]
}
}
toto vypíše:
mojahodnota
ahoj
môžete polia a objekty rôzne zanorovať, takže môže vzniknúť kludne aj niečo takéto:
obj.pole[2][i].objektdva.pole[j][2][k].cukor.muka.muka[6]
toto když dáte vo vnútri cyklu s premennými i, j a k až po veľkosť celých arrayov tak to vypíše všetky hodnoty z pole[2] (druhý riadok poľa obsahuje ďalšie poľe z ktorého vypíše všetky hodnoty splnajuce všetko v interpolácii zapísané za týmto výrazom, teda z toho poľa načíta objektdva v ktorom je pole, u toho poľa rovnako ako v prípade všetky prvky s druhým indexom 2, z neho vyjme cukor, z toho muku, a z toho hodnotu z pola muka na indexe 6.
Teraz asi máte v tom chaos. Ale v prípade objektov zanorenie je jasné, v prípade poľa je možné v prípade pole[i] si predstaviť ako očíslovaný zoznam... v prípade pole[i][j] ako tabuľku, kde prvá hodnota je riadok a druhá stĺpec... potom pole[i][j][k] je už vhodnejšie si predstaviť spôsobom čo na čo ukazuje.
Vysvetlí to tento obrázok:
kde i je vlastne index políčka, z ktorého šipka smeruje do druhého zoznamu, j je index z ktorého políčka smeruje šipka do tretieho zoznamu a zároveň do ktorého smerovala z prvého zoznamu, a k je políčko už v tom tretom zozname.
Takže z obrázku by vybralo číslo 0 z toho zoznamu úplne hore na pravo kdyby si napísal pole[0][0][5]
a nakoniec môžeš urobiť i to že v indexu urobíš niečo ako pole[ (i+j-2) ] čož najskôr spočíta výraz i+j-2 a následne hodnotu použije pre získanie položky. V indexy môžeme odkázať aj na premennú z JSONu. to Znamená že ak máme:
{
"pole": ["nulty", "prvy", "druhy", "treti"],
"cislo": 2
}
a použijeme interpoláciu: {{ pole[cislo] }} tak to vypíše slovo druhy. Treba si zapamätať že počítač počíta od nuly. Tzv, prvé slovo v zozname má index 0, druhé slovo index 1 atd...
Možno to znie komplikovane, ale je to v podstate strašne jednoduché... když si to nakreslíte na papier tak to hneď pochopíte. Ono najlepšie by to bolo vysvetliť na reálnych príkladoch a kreslením. Myslím že až pozriete toto video tak pochopíte:
https://www.youtube.com/watch?v=C30NQ1vHdnY (prvé 2 minuty môžete preskočiť, môžete preskočiť aj 13 až 16 minutu)). Tam len vysvetluje špecifickú retardaci pri deklarácií polí v Jave... Java je celkom blbý jazyk čo sa takýchto vecí týka, ale samotný princíp pola je v tom videu dobre vysvetlené... Nezamerujte sa na kód, len na princíp, ktorý okecáva.
Arraye / polia ; a objekty sú vo všetkých bežných progr. jazykoch zhodné (a aj v JSONe), a rovnako je to i v tom TWIGFiddle, akurát rozdiel je že když zistujete dĺžku poľa pre cyklus, tak stačí tam dať "i in array" a nemusíte písať "i in array.lenght" to jak robí nákres pre array vo videu, tie štvorčeky na tabule, tak to je podobné aj pre objekty, len s rozdielom, že tie nie sú indexované číselne automaticky od nuly, ale je každému políčku priradený názov, cez ktorý sa odkazuješ. Jak vidíš v mojom prvom príklade "pojistka.rizika.doplnkova.nazev"