Variablen miteinander verknüpfen

LongDonJohn

Mitglied
Tach auch!

Habe da ein Problem, zu dem es hoffentlich eine Lösung gibt.

Ich fange einfach mal an:

Ich habe eine Datei, in der mehrere Arrays gefüllt werden:

menuepunkte.php:

PHP:
$mainmenue[0]="Text1";
$mainmenue[1]="Text2";
$mainmenue[2]="Text3";

$submenue0[0]="Text1";
$submenue0[1]="Text2";
$submenue0[2]="Text3";

$submenue1[0]="Text1";
$submenue1[1]="Text2";
$submenue1[2]="Text3";

usw.

Diese Datei wird in der index.php includiert. Wie man schon ahnen kann, sind in den Arrays die Haupt- und Untermenuepunkte gespeichert.

Durch mehrere ineinander verschachtelte Schleifen möchte ich nun das Menü aufbauen lassen, und zwar so, dass das entsprechende Untermenü nur für den gewählten Hauptmenüpunkt sichtbar ist.

Das Problem dabei ist aber, dass jeder Hauptmenüpunkt ein Untermenü hat (submenue), die durch die anschließende Zahl dem dazugehörigen Hauptmenü zugeordnet werden sollen.

Hier mal der Code:

index.php:
PHP:
include("menuepunkte.php");
$counter=0;

while (isset($mainmenue[$counter])) {
	$counter++;
}

$b=1;

for ($a=0;$a<$counter;$a++) {
	echo '<a href="index.php?men1='.$b.'&men2=00&men3=00" class="link_mainmenue">'.$mainmenue[$a].'</a>';
	
	if ($men1==$b){
		$subcounter=0;
		
//hier kommt das Problem:
		while (isset($submenue.$a[$subcounter])) {
			$subcounter++;
		}
		
		for ($c=0;$c<$subcounter;$c++) {
			echo '<a href="index.php?men1=01&men2=01&men3=00" class="link_submenue">'.$submenue.$a[$c].'</a>';
		}
	}
	
	$b++;
}
Das ganze baut sich in einer Tabelle auf, die ich aus Gründen der Übersichtlichkeit aus dem Code entfernt habe.

Scheinbar kann ich den Array $submenue[] nicht mit der Variablen $a verknüpfen, um das richtige Untermenü dem richtigen Hauptmenüpunkt zuzuordnen.

Oder geht das doch und ich bin nur zu blöd? Oder hat jemand ne bessere Lösung?

Danke im Voraus!
John
 
Grundsätzlich ist es zwar möglich, über das Konstrukt mit zwei Dollarzeichen auf dynamische Variablennamen zuzugreifen,
PHP:
$var1='Hallo';
$i=1;
$vName="var".$i;
echo $$vName; //Gibt Hallo aus
aber wo Du schon mit Arrays angefangen hast, solltest Du auch dabei bleiben. Da gibt es verschiedene Möglichkeiten, entweder mit mehrdimensionalen Arrays oder aber einem zweitem zweidimensionalen für die Untermenüs.
PHP:
//Mehrdimensionale Arrays:
$menu=array();
$menu[0]['Item']="Text1";
$menu[1]['Item']="Text2";
$menu[2]['Item']="Text3";

$menu[0]['Submenu'][0]['Item']="Text11";
$menu[0]['Submenu'][1]['Item']="Text12";
$menu[0]['Submenu'][2]['Item']="Text13";

$menu[1]['Submenu'][0]['Item']="Text21";
$menu[1]['Submenu'][1]['Item']="Text22";
$menu[1]['Submenu'][2]['Item']="Text23";

$menu[2]['Submenu'][0]['Item']="Text31";
$menu[2]['Submenu'][1]['Item']="Text32";
$menu[2]['Submenu'][2]['Item']="Text33";
Vorteil: Du kannst beliebig tief verschachteln.
Nachteil: etwas komplizierter, für die gesamte beliebige Hierarchie ist eine Rekursion notwendig.

PHP:
//Eine eigene Variable für Untermenüs:
$mainmenue=array();

$mainmenue[0]="Text1";
$mainmenue[1]="Text2";
$mainmenue[2]="Text3";

$submenue=array();

$submenue[0][0]="Text11";
$submenue[0][1]="Text12";
$submenue[0][2]="Text13";

$submenue[1][0]="Text21";
$submenue[1][1]="Text22";
$submenue[1][2]="Text23";

$submenue[2][0]="Text31";
$submenue[2][1]="Text32";
$submenue[2][2]="Text33";
Vorteil: Leichter zu überblicken und ohne Rekursion auszulesen.
Nachteil: Beschränkt auf eine bestimmte Anzahl Ebenen. Bei mehr als zwei Ebenen umständlich.

Gruß hpvw
 
In PHP gibt es so genannte mehrdimensionale Variablen (heissen glaube ich so).

PHP:
$menunr = 3;
$name = "submenue" . $menunr;

echo $$name;

das echo $$name gibt nun den Inhalt der Variable $submenue3 aus :)

// EDIT:

schon wieder zu wenig schnell. Ich würde Dir jedoch auch empfehlen es so zu machen wie dir hpvw enpholen hat (mit mehrdimensionlen Arrays).
 
Zurück