[PHP] list parsen vanuit array

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024
Ik heb weer wat tijd gehad om verder te experimenteren met m'n list script. Het nu allemaal as it is, jammer genoeg heb ik één ding wel over het hoofd gezien wat ik straks wel nodig heb. Eerst ff 't script. Ik creeer een variable met daarin een multidimensionarray. momenteel bevat die array twee arrays met ieder drie attribute arrays. die parse ik in dat onderste stukje php code dmv een paar loops;

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$menu = array( array( array('id','class','href','img','alt'),
                                array('id','class','href','img','alt'),
                                array('id','class','href','img','alt')
                               ),
                       array( array('id','class','href','img','alt'),
                                array('id','class','href','img','alt'),
                                array('id','class','href','img','alt')
                               )
                     );
 
echo "<ul>\n";
foreach( $menu as $menu=>$choice ) {
    echo " <li>$menu\n";
    echo "  <ul>\n";
    foreach( $choice as $choice=>$attrib ) {
        echo "   <li>";
        echo "<a href=\"$attrib[2]\">[img]\"$attrib[3]\"[/img]</a>";
        echo "</li>\n";
        }
    echo "  </ul>\n";
    echo " </li>\n";
    }
echo "</ul>\n";


De output is precies zoals ik het graag wil zien muv van wat ik vergeten ben dan :D ;

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<ul>
 <li>0
  <ul>
   <li><a href="href">[img]"img"[/img]</a></li>
   <li><a href="href">[img]"img"[/img]</a></li>
   <li><a href="href">[img]"img"[/img]</a></li>
  </ul>
 </li>
 <li>1
  <ul>
   <li><a href="href">[img]"img"[/img]</a></li>
   <li><a href="href">[img]"img"[/img]</a></li>
   <li><a href="href">[img]"img"[/img]</a></li>
  </ul>
 </li>
</ul>


Kijk, dit werkt allemaal prachtig met uitzondering van wat ik vergeten ben, en dat is dat ik op de hoofd-li's ook eigen attributen nodig hadden gehad. 't Liefste heb ik die gewoon los in erbij in de array en dan de eigenlijke li's een laag dieper. Ik heb al zitten pielen met die array, maar ik kom idd terecht, in waar mensen al voor hadden gewaarschuwd, gruwelijk nestingsproblemen. Neemt niet weg dat ik denk dat het zo als ik het in mijn hoofd heb ook gewoon werken kan. Maar ik krijg het er niet bijgezet in die array.

ik wil deze output graag zien;

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<ul>
 <li><a href="href">[img]"img"[/img]</a>
  <ul>
   <li><a href="href">[img]"img"[/img]</a></li>
   <li><a href="href">[img]"img"[/img]</a></li>
   <li><a href="href">[img]"img"[/img]</a></li>
  </ul>
 </li>
 <li><a href="href">[img]"img"[/img]</a>
  <ul>
   <li><a href="href">[img]"img"[/img]</a></li>
   <li><a href="href">[img]"img"[/img]</a></li>
   <li><a href="href">[img]"img"[/img]</a></li>
  </ul>
 </li>
</ul>


Volgens mij moet dat er gewoon bijkunnen in die array, los van de onderliggende li's. Zodat die array ooit een beetje duidelijk blijft. Mijn vraag; is dat mogelijk wat ik wil? Ik kan wel weer vier dagen verder pielen om er achter te komen dat 't niet eens kan dus ik denk ik vraag het even. * iH8 ziet weer door de bomen het bos weer eens niet. 8)7

[ Voor 56% gewijzigd door iH8 op 02-02-2005 00:47 ]

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • Pollus
  • Registratie: Juni 2004
  • Laatst online: 05-09-2022
Misschien moet je ons eerst even een HELE goede reden geven waarom je het per-see in een array wilt hebben? :)

Pollus


Acties:
  • 0 Henk 'm!

Verwijderd

Is opzich wel te doen, heb het wel eens gedaan om een semi staties, semi dynamiese sitemap in een array te frotten.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
array(
     [0] => array(
         'attibuut' => "<a href=''>";
         'child'  => array(
                                [0] => array(
                                 'attribuut' => "<a href=''>";
                                 'child' => array();
                                  )
                                [1] => array(
                                 'attribuut' => "<a href=''>";
                                 'child' => array();
                                  )

                           )
              )
     [1] => array(
         'attibuut' => "<a href=''>";
         'child'  => array(
                                [0] => array(
                                 'attribuut' => "<a href=''>";
                                 'child' => array();
                                  )
                                [1] => array(
                                 'attribuut' => "<a href=''>";
                                 'child' => array();
                                  )

                           )
                     )
)


is even uit de losse pols hoor.
Het princiepe is gewoon dat elke node gewoon een array op zichzelf is die andere nodes kan bevatten.

Echter is dit gewoon een quick&dirty manier.
netter zou opzich zijn om gewoon een class te maken dat zo'n node voorstelt, en een class dat een list is.
en dat een node een list kan bevatten en een list meerdere nodes.
oid iig.

Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024
haha, Die had ik aan zien komen eigenlijk. Bijdeze dan nog even; Ik ben nog niet zolang met php bezig. Wel al sinds jaar en dag m'n dingen klakkeloos copy pasten etc maar niet intensief zelf proberen te schrijven. Dat pas sinds een paar maanden. Ik was nu met dit (arrays, output etc) bezig voor de fun, kan die list idd op tientallen andere manieren parsen die ik hier ongetwijfeld allemaal heb liggen of ingezien heb. Ik weet ook, dat dit misschien niet netjes en/of efficiënt is. Alleen dit script en ik, dit is persoonlijk aan het worden. Dat ding zal het doen, al val ik dood neer ;) ghehehe })

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024
Verwijderd schreef op woensdag 02 februari 2005 @ 01:00:
Is opzich wel te doen, heb het wel eens gedaan om een semi staties, semi dynamiese sitemap in een array te frotten.

is even uit de losse pols hoor.
Het princiepe is gewoon dat elke node gewoon een array op zichzelf is die andere nodes kan bevatten.

Echter is dit gewoon een quick&dirty manier.
netter zou opzich zijn om gewoon een class te maken dat zo'n node voorstelt, en een class dat een list is.
en dat een node een list kan bevatten en een list meerdere nodes.
oid iig.
Netjes en quick & dirty idd. Ik heb ook classes en oop scripts gezien met veel betere capaciteiten, maar voor at ik dat letter voor letter zo schrijven en begrijpen kan, dat gaat me nog wel ff duren. Ik wil het gewoon eerst ff zo en ga ff aan de slag met wat je me nu net geeft. Nu zal mijn outputgedeelte wel weer totaal niet meer werken. Ik ga weer aan het herschrijven. Bedankt! Ziet er logisch uit als ik het zo zie.

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
even een unrelated note:

je sluit je <a> tag 2x af.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024
Grijze Vos schreef op woensdag 02 februari 2005 @ 12:51:
even een unrelated note:

je sluit je <a> tag 2x af.
ik zie niet wat je bedoelt? ik begin een a href met daarin een img die ik afsluit zoals 't moet, daarna sluit ik de a. ik zou niet weten hoe 't anders zou moeten. deze output valideert ook gewoon als zijnde xhtml1.0 strict. leg uit! :)

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

Verwijderd

hij bedoelt denk ik dit
code:
1
   <li><a href="href">[img]"img"[/img]</a></li>

-edit-
arghh, nevermind

ik last het als zijnde
<a href alt="alt" /></a>

[ Voor 81% gewijzigd door Verwijderd op 02-02-2005 14:37 ]


Acties:
  • 0 Henk 'm!

  • WormLord
  • Registratie: September 2003
  • Laatst online: 10:10

WormLord

Devver

Als je met arrays in de knoop zit, dan helpt het vaak als je je array-elementen namen als index geeft. Dan zie je makkelijker hoe de structuur is.

En volgens mij wil je zoiets (niet getest):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
$menu = array( 'menu1' => array('info'  => array('id','class','href','img','alt'),
                     'items' => array( array('id','class','href','img','alt'), 
                                       array('id','class','href','img','alt'), 
                                       array('id','class','href','img','alt') 
                                      )
                     ),
               'menu2' => array('info'  => array('id','class','href','img','alt'),
                     'items' => array( array('id','class','href','img','alt'), 
                                       array('id','class','href','img','alt'), 
                                       array('id','class','href','img','alt') 
                                      )
                     )
               );
echo "<ul>\n"; 
foreach( $menu as $menu=>$choice ) { 
    $attrib = $choice['info'];
    echo " <li>$menu\n"; 
    echo "<a href=\"$attrib[2]\">[img]\"$attrib[3]\"[/img]</a>"; 
    echo "  <ul>\n"; 
    foreach( $choice['items'] as $choice=>$attrib ) { 
        echo "   <li>"; 
        echo "<a href=\"$attrib[2]\">[img]\"$attrib[3]\"[/img]</a>"; 
          echo "</li>\n"; 
          } 
      echo "  </ul>\n"; 
      echo " </li>\n"; 
    } 
echo "</ul>\n";
?>

Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024
WormLord schreef op woensdag 02 februari 2005 @ 17:24:
Als je met arrays in de knoop zit, dan helpt het vaak als je je array-elementen namen als index geeft. Dan zie je makkelijker hoe de structuur is.

En volgens mij wil je zoiets (niet getest):
PHP:
1
...
jij regeert! "zoiets" wilde ik niet! dat is precies wat ik wilde hahaha hartelijk bedankt! * iH8 is dolgelukkig. ik was er zelf ook bijna. maar had nog wat probs. :)

Aunt bunny is coming to get me!

Pagina: 1