Array katalogisieren

hab1cht

Erfahrenes Mitglied
Hallo,
ich habe ein Array mit folgender Struktur:
Code:
Array
(
    [1] => BMW
    [BMW] => Array
        (
            [1] => Jahrgang1999
            [Jahrgang1999] => Array
                (
                    [1] => Auto1
                    [2] => Auto2
                    [3] => Auto3
                )

            [2] => Jahrgang2000
        )

)

Nun lasse ich mir von jedem Eintrag bestimmte Informationen ausgeben:
Code:
ID:1 => Parent_ID:? => Sort_ID:1 => BMW
ID:2 => Parent_ID:? => Sort_ID:1 => Jahrgang1999
ID:3 => Parent_ID:? => Sort_ID:1 => Auto1
ID:4 => Parent_ID:? => Sort_ID:2 => Auto2

So und jetzt meine Frage: Wie komme ich an die Parent_ID ran?
Bei BMW sollte die Parent_ID 0 sein, bei Jahrgang1999 sollte sie 1 sein (die ID von BMW), bei Auto1, Auto2 und Auto3 sollte sie 2 sein....

Hier noch mein Codeschnipsel:
PHP:
$i = 0;
function draw_array($array){
global $i;
 	foreach($array as $key=>$list){
        	if(is_array($list)){
          		draw_array($list);         
          	}
		else{
		$i++;
        	echo "ID:".$i." => Parent_ID:".$parent_id." => Sort_ID:".$key." => ".$list."<br>";
		}        
        }
}
draw_array($array);

Vielen Dank im Voraus

MfG
hab1cht
 
Die Kategorien liegen im Moment als Array vor, diese will ich nun in eine DB eintragen, dafür brauche ich allerdings die ganzen Werte...
und diese will ich nicht per Hand eintragen
 
Versuch es mal so:
PHP:
function draw_array($array){
global $i;
global $x;
     foreach($array as $key=>$list){
            if(is_array($list)){
                  draw_array($list);         
              }
        else{
	if($i=="0") { $parent_id = 0; $x = 0;} elseif ($key=="1") { $x++; $parent_id = $x; } 
        $i++;
	          echo "ID:".$i." => Parent_ID:".$parent_id." => Sort_ID:".$key." => ".$list."<br>";
        }        
        }
}
draw_array($array);
 
Danke guter Ansatz, funktioniert leider noch nicht 100%ig...
werde mal an deinem Vorschlag ein bisschen rumbasteln, wird schon irgendwann klappen...


Wenn jemand noch eine Idee hat ruhig melden ;)

MfG
hab1cht
 
Schwer zu erklären, aber ich zeige hier mal ein Beispiel:
Bei folgender Array-Konstellation:
Code:
Array
(
    [1] => Auto
    [Angelsport] => Array
        (
            [1] => BMW
            [Angel-Sets] => Array
                (
                    [1] => Auto1
                    [2] => Auto2
                    [3] => Auto3
                    [Auto3] => Array
                        (
                            [1] => Reifen
                        )
                )
            [2] => Audi
        )

    [2] => Motorräder
    [3] => Dreiräder
    [Dreiräder] => Array
        (
            [1] => Carrera
            [2] => Merklin
        )
    [4] => Quad
)

Kommt folgende Ausgabe:
Code:
ID:1 => Parent_ID:0 => Sort_ID:1 => Auto
ID:2 => Parent_ID:1 => Sort_ID:1 => BMW
ID:3 => Parent_ID:2 => Sort_ID:1 => Auto1
ID:4 => Parent_ID:2 => Sort_ID:2 => Auto2
ID:5 => Parent_ID:2 => Sort_ID:3 => Auto3
ID:6 => Parent_ID:3 => Sort_ID:1 => Reifen
ID:7 => Parent_ID:1 => Sort_ID:2 => Audi
ID:8 => Parent_ID:0 => Sort_ID:2 => Motorräder
ID:9 => Parent_ID:0 => Sort_ID:3 => Dreiräder
ID:10 => Parent_ID:4 => Sort_ID:1 => Carrera
ID:11 => Parent_ID:4 => Sort_ID:2 => Merklin
ID:12 => Parent_ID:0 => Sort_ID:4 => Quad

Es sollte allerdings so sein:
Code:
ID:1 => Parent_ID:0 => Sort_ID:1 => Auto
ID:2 => Parent_ID:1 => Sort_ID:1 => BMW
ID:3 => Parent_ID:2 => Sort_ID:1 => Auto1
ID:4 => Parent_ID:2 => Sort_ID:2 => Auto2
ID:5 => Parent_ID:2 => Sort_ID:3 => Auto3
ID:6 => Parent_ID:5 => Sort_ID:1 => Reifen
ID:7 => Parent_ID:1 => Sort_ID:2 => Audi
ID:8 => Parent_ID:0 => Sort_ID:2 => Motorräder
ID:9 => Parent_ID:0 => Sort_ID:3 => Dreiräder
ID:10 => Parent_ID:9 => Sort_ID:1 => Carrera
ID:11 => Parent_ID:9 => Sort_ID:2 => Merklin
ID:12 => Parent_ID:0 => Sort_ID:4 => Quad

Sprich die ID der Überkategorie soll verwendet werden

Hoffe es hat jemand eine gute Idee..

Vielen Dank schon einmal Iches

MfG
hab1cht
 
Dann versuch mal dies hier:

PHP:
function draw_array($array){
global $i;

foreach($array as $key=>$list){
            if(is_array($list)){
                  draw_array($list);         
              }
        else{
	if($i=="0") { $parent_id = 0;} elseif ($key=="1") { $parent_id = $i; } 
	
        $i++;
	          echo "ID:".$i." => Parent_ID:".$parent_id." => Sort_ID:".$key." => ".$list."<br>";
	}        
        }
}
draw_array($array);
 
Danke, so funktioniert es auch...
Habe heute Mittag beim rumprobieren das ganze folgendermaßen gelöst, konnte es allerdings nicht hier reinschreiben, da tutorials.de kurzzeitig down war
PHP:
function draw_array($array){
global $i;
global $x;
     foreach($array as $key=>$list){
            if(is_array($list)){
		$x = $i;	
                draw_array($list);         
              }
        else{
    		if($i == "0"){
			$parent_id = 0;
			$x = 0;
		}
		elseif($key == "1"){
			$x++;
			$parent_id = $x-1;
		} 
        	$i++;
              	echo "ID:".$i." => Parent_ID:".$parent_id." => Sort_ID:".$key." => ".$list."<br>";
        }        
        }
}
draw_array($array);
 
Zurück