Antworten auf deine Fragen:
Neues Thema erstellen

PHP Menü über mehrdimensionales Array generieren.

userxyz

Noch nicht viel geschrieben

Ich habe hier mehr eine Bitte als eine Frage.
Momentan beschäfftige ich mich mir rekursiven Funktionen und in diesem Zusammenhang möchte ich ein Menü mit verschiedenen Ebenen abbilden.
Die Funktion steht so weit. Allerdings funktioniert sie momentan nur mit einer bestimmten Art von mehrdimensionalen Array's.
Ich hätte das gerne etwas dynamischer. Deshalb meine Bitte an euch, stellt doch ein mehrdimensionales Array ein, mit dem Ihr das Hauptmenü einer Webseite generieren lassen würdet.
 

afr0kalypse

Allwissendes Karmameerschweinchen!

AW: PHP Menü über mehrdimensionales Array generieren.

Sowas ist aber nie gern gesehen :) Viel lieber haben wir es, wenn wir deinen bisherigen Code sehen und dann mal schauen können, was man daraus so machen kann.
 

Myhar

Hat es drauf

AW: PHP Menü über mehrdimensionales Array generieren.

So in etwa könnte man das Array aufbauen.

[Hauptmenüpunkt
[ [Untermenü 1. Ebene] [Untermenü 1. Ebene [ [Unteruntermenü 2. Ebene] [Untermenü 2. Ebene] ] ] ]
[ [Untermenü 1. Ebene] [Untermenü 1. Ebene [ [Unteruntermenü 2. Ebene] [Untermenü 2. Ebene] ] ] ]
]
[Nächster Hauptmenüpunkt ... siehe erster Hauptmenüpunkt ... ]
 

userxyz

Noch nicht viel geschrieben

AW: PHP Menü über mehrdimensionales Array generieren.

Hier das gewünschte Beispiel, wie meine Funktion und mein Array bis jetzt aussehen:

PHP:
<?php
$nav = Array();

$nav[] = array(
	'link' => "#",
	'name' => "Punkt1",
	'active' => "",
	'subnav' => array(
		array(
			'link' => "#",
			'name' => "SubPunkt1",
			'active' => ""
		), array(
			'link' => "#",
			'name' => "SubPunkt2",
			'active' => ""
		)
	)
);
$nav[] = array(
	'link' => "#",
	'name' => "Punkt2",
	'active' => "",
	'subnav' => array(
		array(
			'link' => "#",
			'name' => "SubPunkt1",
			'active' => ""
		), array(
			'link' => "#",
			'name' => "SubPunkt2",
			'active' => "",
			'subnav' => array(
				array(
					'link' => "#",
					'name' => "SubSubPunkt1",
					'active' => ""
				), array(
					'link' => "#",
					'name' => "SubSubPunkt2",
					'active' => ""
				)
			)
		)
	)
);
$nav[] = "hallo";

function getNav($var) {
	if (is_array($var)) {
		echo "<ul>\n";
		foreach ($var as $value) {
			
			if (isset($value["active"]) && $value["active"] === 1) {
				$activeLink = "active";
			} else {
				$activeLink = "";
			}
			if (isset($value["link"])) {
				$link = $value["link"];
			} else {
				$link = "";
			}
			if (isset($value["name"])) {
				$linkName = $value["name"];
			} else {
				$linkName = "";
			}
			echo "<li class=" . $activeLink . ">\n<a href=" . $link . ">\n" . $linkName . "</a></li>\n";

			if (isset($value["subnav"]) && is_array($value["subnav"])) {
				getNav($value["subnav"]);
			}
		}
		echo "</ul>\n";
	} else {
		echo "<h1>else</h1>";
		print_r($nav);
		echo "<a href=" . $var["link"] . ">\n";
		echo $var;
		echo "</a>";
	}
}

getNav($nav);
?>
 

Duddle

Posting-Frequenz: 14µHz

AW: PHP Menü über mehrdimensionales Array generieren.

Was ist jetzt genau dein Problem bzw. die Frage? Welchen Teil davon möchtest du "dynamischer" machen?


Duddle
 

afr0kalypse

Allwissendes Karmameerschweinchen!

AW: PHP Menü über mehrdimensionales Array generieren.

Vielleicht suchst du sowas hier?
PHP:
$test = array(
    'Linka', 
    'linkb', 
    'linkc', 
    'linkd' => array(
        'sublinka', 
        'sublinkb', 
        'sublinkc' => array(
            'subsuba', 
            'subsubb'
        )
    )
);
return_array($test);
function return_array($var, $rec = false)
{
    if(!preg_match("/\d/", $rec)) {
        echo $rec . "\n";
    }
    if(is_array($var)) {
        echo "<ul>\n";
        foreach($var as $key => $value) {
            echo "<li>\n";
            return_array($value, $key);
            echo "</li>\n";
        }
        echo "</ul>\n";
    } else {
        echo $var;
    }
}
Jeder Wert im Array ist ein Listenelement li. Jeder Key der keine Ziffer enthält ist auch ein Listenelement li. Gleichzeitig ist der Key Teil eines verschachtelten Arrays und wird mit ul einer neuen Ebene zugewiesen.
So muss man nicht für jedes Element einen eigenen Key erstellen.
Funktioniert ganz gut solange man keine Ziffern als Key benutzt :D

Vielleicht gehts ja noch schöner.
 

userxyz

Noch nicht viel geschrieben

AW: PHP Menü über mehrdimensionales Array generieren.

@afr0kalypse: Danke für das Beispiel. Wenn ich das richtig sehe, brauche ich nur den RegEx etwas anzupassen, dann sollte das auch mit Zahlen funktionieren.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.453
Mitglieder
67.557
Neuestes Mitglied
Charal
Oben