Smarty Forum Index Smarty
WARNING: All discussion is moving to https://reddit.com/r/smarty, please go there! This forum will be closing soon.

foreach mit multidimensionalem array zeigt zu viel an

 
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Smarty Forum Index -> Language: German
View previous topic :: View next topic  
Author Message
kleinerChemiker
Smarty Rookie


Joined: 12 Dec 2003
Posts: 28

PostPosted: Tue Jan 18, 2005 2:08 pm    Post subject: foreach mit multidimensionalem array zeigt zu viel an Reply with quote

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 Sad

tia

MIK
Back to top
View user's profile Send private message
CaptainE
Smarty Rookie


Joined: 23 Dec 2004
Posts: 22

PostPosted: Tue Jan 18, 2005 2:57 pm    Post subject: Reply with quote

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
View user's profile Send private message
kleinerChemiker
Smarty Rookie


Joined: 12 Dec 2003
Posts: 28

PostPosted: Tue Jan 18, 2005 4:30 pm    Post subject: Reply with quote

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
View user's profile Send private message
messju
Administrator


Joined: 16 Apr 2003
Posts: 3336
Location: Oldenburg, Germany

PostPosted: Tue Jan 18, 2005 5:00 pm    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail Visit poster's website
kleinerChemiker
Smarty Rookie


Joined: 12 Dec 2003
Posts: 28

PostPosted: Tue Jan 18, 2005 10:21 pm    Post subject: Reply with quote

aha, thx
hab mich gewundert, weils einfach seltsam war.
Back to top
View user's profile Send private message
Display posts from previous:   
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Smarty Forum Index -> Language: German All times are GMT
Page 1 of 1

 
Jump to:  
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
Protected by Anti-Spam ACP