|
Smarty
WARNING: All discussion is moving to https://reddit.com/r/smarty, please go there! This forum will be closing soon. |
|
View previous topic :: View next topic |
Author |
Message |
kleinerChemiker Smarty Rookie
Joined: 12 Dec 2003 Posts: 28
|
Posted: Tue Jan 18, 2005 2:08 pm Post subject: foreach mit multidimensionalem array zeigt zu viel an |
|
|
template code:
Code: |
{foreach from=$faq item=gruppe}
<h2>{$gruppe.gruppe}</h2><br />
{foreach from=$gruppe item=zeile}
<a href="faq.php?faq={$zeile.id}">{$zeile.txt}</a><br />
{/foreach}
<br />
{/foreach}
|
so sieht das array aus:
Code: |
Array
(
[0] => Array
(
[gruppe] => Spieltechnisches
[0] => Array
(
[txt] => Welche Befehle gibt es auf OW?
[id] => 1
)
[1] => Array
(
[txt] => Welche Abkürzung bedeutet was?
[id] => 3
)
)
[1] => Array
(
[gruppe] => Bugs, Fehler & andere Probleme
[0] => Array
(
[txt] => Beim Einloggen bleibt der Bildschirm grau.
[id] => 2
)
)
)
|
und der output sieht wie folgt aus:
Code: |
<h2>Spieltechnisches</h2><br />
[color=red]<a href="faq.php?faq=S">S</a><br />[/color]
<a href="faq.php?faq=1">Welche Befehle gibt es auf OW?</a><br />
<a href="faq.php?faq=3">Welche Abkürzung bedeutet was?</a><br />
<br />
<h2>Bugs, Fehler & andere Probleme</h2><br />
[color=red]<a href="faq.php?faq=B">B</a><br />[/color]
<a href="faq.php?faq=2">Beim Einloggen bleibt der Bildschirm grau.</a><br />
<br />
|
nun meine frage: wie bekomme ich die rot-geschriebenen zeilen weg? es scheint sich immer um den anfangsbuchstaben der gruppe zu handeln
tia
MIK |
|
Back to top |
|
CaptainE Smarty Rookie
Joined: 23 Dec 2004 Posts: 22
|
Posted: Tue Jan 18, 2005 2:57 pm Post subject: |
|
|
Hallo,
also zuerst: es zeigt nicht zuviel an. wenn du mit foreach durch den Array gehst dann gbt er jeden punkt aus, also nicht nur die indzierten sondern auch den mit gruppe assoziereten teil.
wenn du deine Arraystruktur einfach verändern kannst (d.h. nicht noch andere sachen davon abhängen) dann wäre wohl am sinnvollsten deinen Array umszustellen also so dass neben der gruppe z.b. noch ein element items vorhanden ist und darin alle indizierten elemente. dann kannst du druch die elemente mit {foreach from=$gruppe.items item=zeile} durchlaufen.
wie gesagt sauber weil dann von der logik her eine gruppe aus zwei teilen besteht einem titel und den unterpunkten.
wenn das nicht möglich ist kannst du in der ausgabe abfangen ob der aktuelle punkt eine id hat und nur dann ausgeben. |
|
Back to top |
|
kleinerChemiker Smarty Rookie
Joined: 12 Dec 2003 Posts: 28
|
Posted: Tue Jan 18, 2005 4:30 pm Post subject: |
|
|
danke. umordnen war kein problem.
aber irgendwie zeigts es doch falsch an. wenn es schon jeden punkt durchgeht, dann müßte es doch alles anzeigen und nicht nur den ersten buchstabe. das ist ja das, was mich am meisten wundert, daß es nur den ersten buchstaben anzeigt. |
|
Back to top |
|
messju Administrator
Joined: 16 Apr 2003 Posts: 3336 Location: Oldenburg, Germany
|
Posted: Tue Jan 18, 2005 5:00 pm Post subject: |
|
|
du gibst $zeile.id aus. $zeile ist bei dir aber ab und zu ein string.
in php wird aus $zeile.id ein $zeile['id'].
in php wird mit $str[nummer] auf die einzelnen zeichen eines strings zugegriffen.
php ist nun so "schlau" und denkt sich "hmm 'id' ist keine zahl, also nehm ich mal 0".
also greifst du effektiv auf $zeile[0] und das ist dann der erste buchstabe von $zeile.
HTH
messju |
|
Back to top |
|
kleinerChemiker Smarty Rookie
Joined: 12 Dec 2003 Posts: 28
|
Posted: Tue Jan 18, 2005 10:21 pm Post subject: |
|
|
aha, thx
hab mich gewundert, weils einfach seltsam war. |
|
Back to top |
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|