Multidimensionales Array richtig ausgeben...

MelcomB56

Mitglied
Hi alle zusammen,

entweder bin ich schon zu lange mit diesem Problem beschäftigt das ich gerade mehrere Bretter vor dem Kopf habe oder es ist wirklich nicht so einfach wie ich dachte.

Mein Problem ist eig. ganz banal. Ich will ein multidimensionales Array vernümpftig gegliedert ausgegen. Hier mal das Array:

Code:
Array
(
    [Haus1] => Array
        (
            [wohnung1] => Array
                (
                    [mieter] => Array
                        (
                            [name] => Hans1
                            [nachname] => Wurst1
                        )
                )
            [wohnung2] => Array
                (
                    [mieter] => Array
                        (
                            [name] => Hans2
                            [nachname] => Wurst2
                        )
                )
            [wohnung3] => Array
                (
                    [mieter] => Array
                        (
                            [name] => Hans3
                            [nachname] => Wurst3
                        )
                )
        )
    [Haus2] => Array
        (
            [wohnung1] => Array
                (
                    [mieter] => Array
                        (
                            [name] => Hans4
                            [nachname] => Wurst4
                        )
                )
            [wohnung2] => Array
                (
                    [mieter] => Array
                        (
                            [name] => Hans5
                            [nachname] => Wurst5
                        )
                )
        )
)

Dieses möchte ich nun wie folgt ausgeben:

HAUS 1
> Wohnung 1
>> Mieter
>>> Name
>>> Vorname

>Wohnung 2
>> Mieter
>>> Name
>>> Vorname

>Wohnung 3
>> Mieter
>>> Name
>>> Vorname

>Haus 2
> Wohnung 1
>> Mieter
>>> Name
>>> Vorname

>Wohnung 2
>> Mieter
>>> Name
>>> Vorname

Ich denke das ich das mit einer FOR-Schleife machen müsste aber ich komme zu keinem ergebniss was annähernd so aussieht wie oben angegeben.

Kann mir da jemand auf die Sprünge helfen ?

Danke im voraus für eure mühen und antworten

Geetings
Jan
 
Ähhh ... einfach Ignorieren ... gerade als ich auf Abschicken geklickt habe kam mit eine "Erleuchtung" :)

Hier meine Lösung:

PHP:
while( list ( $key, $val ) = each ( $miete ) )
{
    echo '>'.$key . '<br>';
	while( list ( $key2, $val2 ) = each ( $val ) )
		{
			echo '>>'.$key2 . '<br>';
			while( list ( $key3, $val3 ) = each ( $val2 ) )
				{
					echo '>>>'.$key3 . '<br>';
					while( list ( $key4, $val4 ) = each ( $val3 ) )
						{
							echo '>>>>'.$key4 . ': ' . $val4 . '<br>';
							
						}						
				}	
		}
}

Man man man .. hätte mal ne pause machen sollen ;). Naja, vieleicht konnte ich ja jemanden anders hiermit helfen.

Gute nacht alle zusammen.

Greetings
Jan
 
Auch wen der Thread schon geschlossen ist, PHP biete einen sehr schönen Befehl mit dem man meiner Meinung nach wesentlich bequermer arrays verarbeiten kann als mit [phpf]while[/phpf]. [phpf]foreach[/phpf] ist in den meisten fällen einfacher bzw. komfortabler.
 
Vielleicht hilft dir ja das hier
PHP:
<?php
$data = array();
$data['Haus1']['wohnung1']['mieter']['name'] 		= "Hans";
$data['Haus1']['wohnung1']['mieter']['nachname']	= "Wurst";
$data['Haus1']['wohnung2']['mieter']['name']		= "Max";
$data['Haus1']['wohnung2']['mieter']['nachname']	= "Mustermann";

foreach($data as $haus=>$wohnung)
{
	echo $haus."<br>";
	foreach($wohnung as $nameWohnung => $mieter)
	{
		echo "> ".$nameWohnung."<br>";
		foreach($mieter as $mieterName=>$mieterDaten)
		{
			echo ">> ".$mieterName."<br>";
			echo ">>> ".$mieterDaten['name']."<br>";
			echo ">>> ".$mieterDaten['nachname']."<br>";
		}
		echo "<br>";
	}
	
}
?>
 
Man könnte es auch rekursiv lösen :)

PHP:
function myEcho($array,$lvl=1){
	foreach($array as $k=>$item){
		echo str_repeat('>',$lvl), ($lvl<4)?$k:$item, '<br />', PHP_EOL;
		if(is_array($item)) myEcho($item,$lvl+1);
	}
}


$data = array(
		'Haus 1'=>array(
			'Wohnung 1'=>array('Mieter'=>array('Hans','Wurst')),
			'Wohnung 2'=>array('Mieter'=>array('Hans','Wurst')),
			'Wohnung 3'=>array('Mieter'=>array('Hans','Wurst'))),
		'Haus 2'=>array(
			'Wohnung 1'=>array('Mieter'=>array('Hans','Wurst')),
			'Wohnung 2'=>array('Mieter'=>array('Hans','Wurst'))));

myEcho($data);

Ausgabe:
Code:
>Haus 1<br />
>>Wohnung 1<br />
>>>Mieter<br />
>>>>Hans<br />
>>>>Wurst<br />
>>Wohnung 2<br />
>>>Mieter<br />
>>>>Hans<br />
>>>>Wurst<br />
>>Wohnung 3<br />
>>>Mieter<br />
>>>>Hans<br />
>>>>Wurst<br />
>Haus 2<br />
>>Wohnung 1<br />
>>>Mieter<br />
>>>>Hans<br />
>>>>Wurst<br />
>>Wohnung 2<br />
>>>Mieter<br />
>>>>Hans<br />
>>>>Wurst<br />
 
Zuletzt bearbeitet:
Zurück