[PHP] MultiMDA?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024
Ik heb laatst eens wat zitten frutselen met multidimensional arrays in php. Dat lukt allemaal vrij aardig alleen ik wil nu een stap je verder en zoals ik het momenteel probeer te maken dat pikt mijn editor niet eens, laat staan dat ik ook nog op run durf te duwen.

Ik wil een html list printen vanuit php dmw arrays. Werkt tot zover hartstikke goed met dit stukje code;

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$menus = array(
  'menu1' => array('choice1A','choice1B','choice1C'),
  'menu2' => array('choice2A','choice2B','choice2C'),
);

echo "<ul>\n\n";
foreach( $menus as $menu=>$choice )
{
  echo '<li>'.$menu."</li>\n";
  echo "<ul>\n";
  foreach( $choice as $choice )
  {
    echo '<li>'.$choice."</li>\n";
  }
  echo "</ul>\n\n";
}
echo "</ul>\n\n";


output:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<ul>

<li>menu1</li>
<ul>
<li>choice1A</li>
<li>choice1B</li>
<li>choice1C</li>
</ul>

<li>menu2</li>
<ul>
<li>choice2A</li>
<li>choice2B</li>
<li>choice2C</li>
</ul>

</ul>


Nu wil ik zoals gezegd een stapje verder en m'n individuele choice's attributes meekunnen geven. zoals bv. een kort voorbeeldje;

code:
1
2
3
4
5
6
<li>menu1</li>
<ul>
<li><a href="attribute1A1">choice1A</a></li>
<li><a href="attribute1B1">choice1B</a></li>
<li><a href="attribute1C1">choice1C</a></li>
</ul>


ik noem het attribuut nu even atttribute1A1, omdat ik meerdere attributen wil hebben uiteindelijk, bv. ID of ALT etc. Dat zou dan attribute1A2 moeten worden. Nou komt het dus, ik denk met mn nieuwe geleerde kunstjes gewoon ff een extra array in de array te duwen. Daar gaat heel m'n editor van over z'n nek. Syntax valideert al niet, dus ik twijfel of het zo wel mag al. Mijn idee was ongeveer dit;

code:
1
2
3
4
5
6
7
8
9
$menus = array('menu1'  => array('choice1A' => array('attribute1A1','attribute1A2'),
                                                  'choice1B' => array('attribute1B1','attribute1B2'),
                                                  'choice1C' => array('attribute1A1','attribute1A2')
                                                  ),
                array('menu2'  => array('choice2A' => array('attribute2A1','attribute2A2'),
                                                  'choice2B' => array('attribute2B1','attribute2B2'),
                                                  'choice2C' => array('attribute2A1','attribute2A2')
                                                  )
);


Zit ik zo ver van 't pad af of mag het gewoon simpel zo niet? Of moet ik hier losse array's voor gaan maken?

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

De enige fout die ik kan bekennen is dat je twee keer de variabele $choise gebruikt. Dat het goed gaat verbaast me trouwens wel. Maar met de rest is weinig mis voor zover ik kan zien.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05 22:30

FendtVario

The leader drives Vario!

Moet je er niet (nog een) array om heen ztten?

PHP:
1
2
3
4
$menus = array( 
  array('menu1' => ...), 
  array('menu2' => ...) 
);


Zoiets?

[ Voor 24% gewijzigd door FendtVario op 26-01-2005 16:52 . Reden: typo ]

www.fendt.com | Nikon D7100 | PS5


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024
als ik die laatste array gebruik... die met de attributes erin dan gaat ie over z'n nek van allerlaatst puntcomma. unexpected. ik heb al meerdere dingen geprobeerd, niets structureels maar gewoon ff lukraak puntcomma weg halen ofzo. niets werkt. die laatste array mag niet volgens zend studio.
Debug session started.
Parsing Error: ftp:\office-automation.nl\httpdocs\multi.php line 11 - parse error, unexpected ';', expecting ')'
Debug session ended.

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • WormLord
  • Registratie: September 2003
  • Laatst online: 21-09 10:10

WormLord

Devver

Haal eens dat "array(" stuk weg voor 'menu2'. :O

Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024
idd fendtvario en wormlord. thnx a million.... alleen nu werkt m'n script niet meer. vrij logisch natuurlijk aangezien bv. menu1 nu array heet. nou ben ik weer terug bij af wat de output betreft. maar iig blijkt de syntax van die array nu goed te zijn;

PHP:
1
2
3
4
5
6
7
8
9
$menus = array('menu1'  => array('choice1A' => array('attribute1A1','attribute1A2'),
                                                  'choice1B' => array('attribute1B1','attribute1B2'),
                                                  'choice1C' => array('attribute1A1','attribute1A2')
                                                  ),
               'menu2'  => array('choice2A' => array('attribute2A1','attribute2A2'),
                                                  'choice2B' => array('attribute2B1','attribute2B2'),
                                                  'choice2C' => array('attribute2A1','attribute2A2')
                                                  )
);

alleen m'n output is nu;

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<ul>

<li>menu1</li>
<ul>
<li>Array</li>
<li>Array</li>
<li>Array</li>
</ul>

<li>menu2</li>
<ul>
<li>Array</li>
<li>Array</li>
<li>Array</li>
</ul>

</ul>


ghehehe Nu ben ik weer de weg kwijt. B)

[ Voor 41% gewijzigd door iH8 op 26-01-2005 17:19 ]

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 21:22
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$menus   = array('menu1' => array('choice1A' => array('attribute1A1','attribute1A2'),
                                  'choice1B' => array('attribute1B1','attribute1B2'),
                                  'choice1C' => array('attribute1C1','attribute1C2')
                                 ),
                 'menu2' => array('choice2A' => array('attribute2A1','attribute2A2'),
                                  'choice2B' => array('attribute2B1','attribute2B2'),
                                  'choice2C' => array('attribute2A1','attribute2A2')
                                 )
                );

print_r($menus)
?>

Let op het nesten en pak een highlighter die voor je aangeeft welke () en {} bij elkaar horen.

[ Voor 20% gewijzigd door Mithrandir op 26-01-2005 17:17 ]

Verbouwing


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024
Mithrandir schreef op woensdag 26 januari 2005 @ 17:17:

Let op het nesten en pak een highlighter die voor je aangeeft welke () en {} bij elkaar horen.
je doelt op dat ik hier ook haakje php haakje kan gebruiken? thnx dat wist ik idd nog niet. wat je met nesten bedoelt is me niet volkomen duidelijk. zoals je ongetwijfeld merkt ben ik nog al een beginner en probeer het zo zelf een beetje aldoende te leren. nesten :?

[ Voor 48% gewijzigd door iH8 op 26-01-2005 17:22 ]

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05 22:30

FendtVario

The leader drives Vario!

Nesten is het opnemen van een 'blok' in een ander 'blok'. In je voorbeeld neem je een array op in een andere array, dat is een vorm van nesten.

Er bestaan een aantal vormen van nesten, in sommige talen kun je procedures nesten (Delphi), een klasse opnemen in een andere klasse (java) en array's binnen array's.

* FendtVario gaat opzoek naar een site met betere uitleg

[ Voor 8% gewijzigd door FendtVario op 26-01-2005 17:27 ]

www.fendt.com | Nikon D7100 | PS5


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024
Ow ok, als ik het woord "nesten" zo bekijk Fendtvario, komt me dat wel duidelijk over hoor, nu snap ik alleen niet waarom Mithander zegt dat ik daarmee op moet letten. Niet teveel of niet te diep? Of is dit in principe al een slechte techniek?

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 21:22
Nee, het {nesting} is in principe niet verkeerd. Het is juist een van de dingen die veel gebruikt wordt in OOP; en ook is XML een sorot van nesting van data.

Punt is dat de syntax een beetje onduidelijk wordt doordat je zoveel ( en ) in elkaar hebt zitten. Als je een goede php-editor hebt (of van wleke taal dna ook) kan die je helpen met welke haakjes bij elkaar horen.

Verbouwing


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024
Mithrandir schreef op woensdag 26 januari 2005 @ 17:39:
Nee, het is in principe niet verkeerd. Het is juist een van de dingen die veel gebruikt wordt in OOP; en ook is XML een sorot van nesting van data.

Punt is dat de syntax een beetje onduidelijk wordt doordat je zoveel ( en ) in elkaar hebt zitten. Als je een goede php-editor hebt (of van wleke taal dna ook) kan die je helpen met welke haakjes bij elkaar horen.
Jah ok, ik begrijp wat je bedoelt. Maar dieper er als dit wordt 't niet. Ik heb heb alleen die attributen nodig per choice. That's it. Je hebt volkomen gelijk, het wordt er niet overzichtelijker op. Ik zag in ZendStudio ook al dat de syntax fout zat maar ik kwam er ff niet met die syntax. Teveel gekke dingen geprobeerd, zag door de haakjes idd de php niet meer. :o

[ Voor 12% gewijzigd door iH8 op 26-01-2005 17:48 ]

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05 22:30

FendtVario

The leader drives Vario!

Een blok wordt bepaald door een bepaald begin en eindteken. In PHP is een beginteken o.a. ( en het sluitteken wat hierbij hoort is ). Als je nest moet je er op letten dat alle blokken die je opent ook weer gesloten worden, en dan ook nog op de juiste plaats.

Dat je script nu niet meer werkt komt waarschijnlijk omdat de dingen die je zoek nog een niveau dieper liggen dan eerst, er is nog een array om heen gekomen. Je moet je script daar dus weer op aanpassen.

www.fendt.com | Nikon D7100 | PS5


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024
FendtVario schreef op woensdag 26 januari 2005 @ 17:48:
Een blok wordt bepaald door een bepaald begin en eindteken. In PHP is een beginteken o.a. ( en het sluitteken wat hierbij hoort is ). Als je nest moet je er op letten dat alle blokken die je opent ook weer gesloten worden, en dan ook nog op de juiste plaats.

Dat je script nu niet meer werkt komt waarschijnlijk omdat de dingen die je zoek nog een niveau dieper liggen dan eerst, er is nog een array om heen gekomen. Je moet je script daar dus weer op aanpassen.
ghehehe thx. Ik heb um, nu idd dat script weer aanpassen. Ik zit alweer te experimenteren. Dit is weer een stapje verder. Weer een stapje moeilijker. Vind het hardstikke leuk dat php-gebeuren, aldoende leer ik, steeds sneller gelukkig. * iH8 gaat aan de slag. Hartelijk bedankt voor alle input en antwoorden mensen. Fijn! _/-\o_

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • ikke007
  • Registratie: Juni 2001
  • Laatst online: 18-09 14:10
Je zou eens kunnen kijken naar de hieronder gegeven classes om een lijst te maken. ik zeg niet dat ze perfect werken, maar je zou er wel mee kunnen experimenteren :)

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?PHP

$listItems[0]  =  new listitem('test1');
$listItems[1]  =  new listitem('test2');
$listItems[2]  =  new listitem('test3');
$listItems[3]  =  new listitem('test4');
$listItems[4]  =  new listitem('test5');
$listItems[2]->setLink('http://www.tweakers.net');
$listItems[2]->setClass('selected');
$listItems[2]->setId('unique');

$list      =  new orderedList($listItems);

print($list->getList());

class listitem{
  var $className;
  var $id;
  var $name;
  var $url;
  
  function listitem($name){
    $this->name      =  $name;
  }
  function setLink($url){
    $this->url      =  $url;
  }
  function setClass($classname){
    $this->className  =  $classname;
  }
  function setId($id){
    $this->id      =  $id;
  }
  function getName(){      return $this->name;      }
  function getClassName(){  return $this->className;  }
  function getId(){      return $this->id;      }
  function getLink(){      return $this->url;      }
}

class orderedList{
  var $listItems;#array met listitems
  var $classname;
  var $id;

  function orderedList($listItemsArray){
    if(!is_array($listItemsArray)){
      #het is geen array
      if(!is_object($listItemsArray)){
        #het is ook geen alleenstaand object! wat nou!?
        die('geen items gevonden');
      }
    }
    foreach($listItemsArray as $listItem){
      $class    =  '';
      $id      =  '';
      $liName    =  '';

      if(!is_null($listItem->getClassName())){
        $class = ' class="'.$listItem->getClassName().'" ';
      }

      if(!is_null($listItem->getId())){
        $id = ' id="'.$listItem->getId().'" ';
      }

      if(!is_null($listItem->getLink())){
        $liName    =  '<a href="'.$listItem->getLink().'">'.$listItem->getName().'</a>';
      }
      else{
        $liName    =  $listItem->getName();
      }

      $this->listItems[]  =  '<li'.$id.$class.'>'.$liName.'</li>';
    }
  }
  function setClassName($classname){
    $this->ClassName  =  $classname;
  }
  function setId($id){
    $this->id      =  $id;
  }
  function getList(){
    $classname  =  '';
    $id      =  '';
    if(!is_null($this->getClassName())){
      $classname  =  ' class="'.$this->getClassName().'" ';
    }
    if(!is_null($this->getId())){
      $id  =  ' id = "'.$this->getId().'" ';
    }
    $list   =  '<ol'.$classname.$id.'>'."\r\n";
    if(count($this->getListItems()) <> 0){
      foreach($this->getListItems() as $listItemName => $value){
        $list .= "\t".$value."\r\n";
      }
    }
    $list  .=  '</ol>'."\r\n";
    return $list;
  }
  function getClassName(){  return $this->classname;      }
  function getId(){      return $this->id;          }
  function getListItems(){  return $this->listItems;      }
}
?>

[ Voor 39% gewijzigd door ikke007 op 26-01-2005 19:00 ]

Lets remove all security labels and let the problem of stupidity solve itself


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024
iKKe007 schreef op woensdag 26 januari 2005 @ 18:59:
Je zou eens kunnen kijken naar de hieronder gegeven classes om een lijst te maken. ik zeg niet dat ze perfect werken, maar je zou er wel mee kunnen experimenteren :)
hahaha Is allemaal hartstikke mooi maar ik moet 't zelf ook nog snappen ;) Dat is eigenlijk m'n grootste prioriteit. Zorgen dat ik zelf snap wat ik aan het doen ben. Klakkeloos dit overnemen heb ik niets aan en kom ik nergens mee. Het is niet zo dat ik dit specifiek ergens voor nodig heb ofzo want anders had ik wel snel alles ff statisch in de code gezet. Wil gewoon weten hoe dat allemaal werkt en zat ff vast. Nu ben ik bv. nodig bezig om het bovenstaande aan het werken te krijgen met me m'n nieuwe array en ik ben er nog LANG niet merk ik wel. :D. * iH8 is de beste niet maar ik doe mn best.

[ Voor 66% gewijzigd door iH8 op 27-01-2005 02:19 ]

Aunt bunny is coming to get me!

Pagina: 1