[php] Multidimensionale array

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • phYzar
  • Registratie: November 2001
  • Laatst online: 08:07
Ik ben bezig met een website die meertalig moet worden. Voor de verschillende teksten in de pagina gebruik ik array's:

PHP:
1
2
3
4
5
6
7
8
9
10
11
$mainmenu[0] = array(
"0" => "Domeinregistratie en Webhosting",
"1" => "Servers",
"2" => "Internet Toegang"
);

$mainmenu[1] = array(
"0" => "Domainregistration and Webhosting",
"1" => "Servers",
"2" => "Internet Access"
);


Wanneer ik een bepaalde variabele uit de array echo werkt het goed:

PHP:
1
echo "{$mainmenu[1][1]}";


Dit geeft dus: Servers

Wanneer ik echter dit doe:
PHP:
1
$menuoptie = {$mainmenu[1][1]};

of
PHP:
1
$menuoptie = "{$mainmenu[1][1]}";

of
PHP:
1
$menuoptie = $mainmenu[1][1];

of
PHP:
1
$menuoptie = "$mainmenu[1][1]";

krijg ik een parse-error:
"Parse error: parse error in /var/www/map/map/map/web/script.php on line 37"
(regel 37 is dus de regel waar een van de 3 bovenstaande opties staat.)

Hoe krijg ik een waarde uit de array in de variabele: $menuoptie?

Waarschijnlijk is het een klein syntax foutje van mij, maar ik heb niet kunnen vinden wat de juiste manier moet zijn. Ook van http://nl.php.net ben ik niet wijzer geworden (Op dit punt dan :P )

Ik ben vast niet de enige die dit heeft dus ik hoop dat jullie mij in de goede richting kunnen wijzen.

[ Voor 11% gewijzigd door phYzar op 02-12-2003 12:05 ]


Acties:
  • 0 Henk 'm!

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 05-09 14:30

DizzyWeb

Ondertiteld

Die code moet echt werken, de laatste sowieso!?

Acties:
  • 0 Henk 'm!

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 16-09 19:01

Tux

Kijk eens wat er op de regel voor de regel van de error staat. Het is vaak zo dat de werkelijke bug op de vorige regel staat.

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Acties:
  • 0 Henk 'm!

Verwijderd

je code ziet er goed uit! Volgens mij moet het werken zo....
Heb je alle ; nog even gechecked? ;)

als je $menuoptie in een functie gebruikt moet je hem wel global maken, anders kan je hem niet gebruiken.

global $menuoptie;

Acties:
  • 0 Henk 'm!

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
ergens er boven een ; vergeten ?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Laat ook de regels ervoor even zien. Dat een syntax eror wordt gegeven op regel 37 betekent niet dat de syntax error ook daadwerkelijk daar zit. Hij kan er ook voor zitten en dat de parser er op regel 37 pas achter komt.

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!

  • phYzar
  • Registratie: November 2001
  • Laatst online: 08:07
Tux schreef op 02 december 2003 @ 12:07:
Kijk eens wat er op de regel voor de regel van de error staat. Het is vaak zo dat de werkelijke bug op de vorige regel staat.
Op de regel voor de code staat een declaratie van een variabele (die hier toevallig niets mee te maken heeft.):
PHP:
1
2
$mainPage = $menu_item_id;  <--vorige regel
$menuoptie = "$mainmenu[$taalID][$menu_item_id]";

Wanneer ik aanhalingstekens gebruik krijg ik geen parse-error maar geeft hij de waarde: [1]
Beide variabelen ($taalID en $menu_item_id) kloppen, dat heb ik gecontroleerd door ze als test even te echoën.

edit:

de variabele van de regel ervoor gebruik ik verderop ook en geeft geen problemen

[ Voor 9% gewijzigd door phYzar op 02-12-2003 12:15 ]


Acties:
  • 0 Henk 'm!

  • fagao
  • Registratie: Februari 2000
  • Laatst online: 14-09 17:01
Als je de string waarde van een array wilt hebben moet je die niet tussen quotes doen. Dat gaat niet werken

Acties:
  • 0 Henk 'm!

Verwijderd

Mischien moet je quotes gebruiken, aangezien je dat ook doet met het defineren van de array :)

PHP:
1
2
3
4
5
6
7
<?php
$mainmenu[0] = array( 
"0" => "Domeinregistratie en Webhosting", 
"1" => "Servers", 
"2" => "Internet Toegang" 
); 
?>

Acties:
  • 0 Henk 'm!

  • phYzar
  • Registratie: November 2001
  • Laatst online: 08:07
fagao schreef op 02 december 2003 @ 12:17:
Als je de string waarde van een array wilt hebben moet je die niet tussen quotes doen. Dat gaat niet werken
Tussen quotes werkt niet, niet tussen quotes werkt niet, tussen accolades werkt niet, tussen quotes en accolades werkt niet (en zo nog een aantal opties met quotes, single quotes, accolades, haakjes, etc)

Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
$menuoptie = $mainmenu[$taalID][$menu_item_id];

probeer hem zo eens

en echo $taalID en $menu_item_id even voor de zekerheid, zijn deze goed gezet..

[ Voor 32% gewijzigd door Verwijderd op 02-12-2003 12:23 ]


Acties:
  • 0 Henk 'm!

  • phYzar
  • Registratie: November 2001
  • Laatst online: 08:07
Verwijderd schreef op 02 december 2003 @ 12:19:
Mischien moet je quotes gebruiken, aangezien je dat ook doet met het defineren van de array :)

PHP:
1
2
3
4
5
6
7
<?php
$mainmenu[0] = array( 
"0" => "Domeinregistratie en Webhosting", 
"1" => "Servers", 
"2" => "Internet Toegang" 
); 
?>
Ook quotes gebruiken (je bedoelt: $menuoptie = $mainmenu["1"]["1"]; of $menuoptie = $mainmenu[1]["1"];) werkt niet, (snap je mijn wanhoop nu :'( )

Acties:
  • 0 Henk 'm!

  • phYzar
  • Registratie: November 2001
  • Laatst online: 08:07
Verwijderd schreef op 02 december 2003 @ 12:21:
PHP:
1
$menuoptie = $mainmenu[$taalID][$menu_item_id];

probeer hem zo eens al geprobeerd, zelfs jouw code gecopy paste en nog niets...

en echo $taalID en $menu_item_id even voor de zekerheid, zijn deze goed gezet.. ook al gedaan, waardes kloppen, en de echo van de array ook....

Acties:
  • 0 Henk 'm!

Verwijderd

okee to the test:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
    //aanmaken
    $mainmenu[0] = array( 
    "0" => "Domeinregistratie en Webhosting", 
    "1" => "Servers", 
    "2" => "Internet Toegang" 
    ); 
    
    $mainmenu[1] = array( 
    "0" => "Domainregistration and Webhosting", 
    "1" => "Servers", 
    "2" => "Internet Access" 
    );
    
    $taalID=1;
    $menu_item_id=2;
    
    $menuoptie = $mainmenu[$taalID][$menu_item_id];
    
    echo $menuoptie;
    
?>


echo'ed : Internet Access

het ligt dus echt aan jouw code eromheen....
post eens wat meer code anders, dan kunnen we je beter helpen...

[ Voor 23% gewijzigd door Verwijderd op 02-12-2003 12:28 ]


Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
Waarom gebruik je eigenlijk:
PHP:
1
2
3
4
5
$mainmenu[0] = array(
    "0" => "Domeinregistratie en Webhosting",
    "1" => "Servers",
    "2" => "Internet Toegang"
    );

en niet:
PHP:
1
2
3
4
5
$mainmenu[0] = array(
     "Domeinregistratie en Webhosting",
     "Servers",
     "Internet Toegang"
    );

het gebruiken van een associative array is een beetje zinloos als je keys overeen komen met de standaard index.

Acties:
  • 0 Henk 'm!

  • phYzar
  • Registratie: November 2001
  • Laatst online: 08:07
stekkel schreef op 02 december 2003 @ 12:34:
Waarom gebruik je eigenlijk:
PHP:
1
2
3
4
5
$mainmenu[0] = array(
    "0" => "Domeinregistratie en Webhosting",
    "1" => "Servers",
    "2" => "Internet Toegang"
    );

en niet:
PHP:
1
2
3
4
5
$mainmenu[0] = array(
     "Domeinregistratie en Webhosting",
     "Servers",
     "Internet Toegang"
    );

het gebruiken van een associative array is een beetje zinloos als je keys overeen komen met de standaard index.
(voor het voorbeeld, in het echt staan er meerdere, elkaar niet persé opvolgende waardes in)
echo'ed : Internet Access

het ligt dus echt aan jouw code eromheen....
post eens wat meer code anders, dan kunnen we je beter helpen...
ik ga even graven :P

[ Voor 22% gewijzigd door phYzar op 02-12-2003 12:44 ]


Acties:
  • 0 Henk 'm!

  • phYzar
  • Registratie: November 2001
  • Laatst online: 08:07
doh!

PHP:
1
2
3
include ("getRealm.php");  <--plek waar ik de variabele aanmaak
include ("language.php");  <--plek waar de array staat
include ("makeBox.php");  <--plek waar ik de variabele gebruik


oftewel getRealm.php zoekt naar een variabele die pas bij language.php voorkomt :X 8)7

ff de includes husselen doet wonderen :P

Duidelijk iets stoms dus, maar heel erg bedankt voor jullie hulp _/-\o_
Pagina: 1