# Übergabe eines mehrdimensionalen Arrays von PHP nach Javascript



## Custom1 (18. August 2009)

Hi Community,

ich komme bei einer Sache einfach nicht weiter.
Ich will alle Dateinamen aus mehreren Ordnern auslesen und diese dann in einem 2D Array speichern. (keine Unterordner) (photos_lists)
Außerdem werden zuvor die Ordnernamen in einem 1D Array extra gespeichert. (gallery_paths)
In der ersten Dimension soll dann der Ordnername stehen und in der zweiten die dazugehörigen Dateien.
In PHP ist das kein Problem. Dass heißt, dass das Erfassen der Dateien und Ordner tatsächlich funktioniert. Jedoch möchte ich das Array nach der Erstellung an Javascript übergeben. 
JS soll dann dafür sorgen, dass die Dateien ( Dateien=Bilder) in einer lightbox angezeigt werden.

Für die Übergabe habe ich eine Funktion geschrieben:

```
function copyToJs($gallerypaths, $photos_lists){
	?>
	
	<script>
	<?php 
	$outermax=sizeof($gallerypaths);	
	echo "var outermax='$outermax';";	?>
	var photos_lists = new Array();
	var gallerypaths = new Array();
	<?
	for($l = 0; $l<$outermax; $l++)
	{			
		echo "var l='$l';";?>			
		gallerypaths[l] = "<?=$gallerypaths[$l]?>";			
		<?
	}

	for($i = 0; $i<$outermax; $i++)
	{			
		echo "var i='$i';";?>				

		photos_lists[i] = new Array();
		
		<?
		$innermax=sizeof($photos_lists[$i]);			
		for($j = 0; $j<$innermax; $j++)
		{			
			echo "var j='$j';";	?>
			photos_lists[i][j] = "<?=$photos_lists[$i][$j]?>";
			
			//Hier ist alles korrekt
			alert(photos_lists[i][j]);
			<?
		}	?>
		
		//doch hier gibt er nur undefined aus 
		alert(photos_lists[0][0]);		<?
	}
	?>
	// bereits hier ist photos_lists nicht mehr bekannt aber gallerypaths
	//alert(gallerypaths[0]);
	//alert(photos_lists[0]);
	</script>
	<?php
}
```

Wie an den Kommentaren zu lesen ist, funktioniert die Übergabe super, aber nur innerhalb der 2. For-Schleife. Dort werden dann durch alert die Einträge korrekt wiedergegeben.
Doch sobald man die 2. For-Schleife verlässt, erkennt er das array nicht mehr richtig.
Das seltsame ist, dass es bei dem 1D Array gallery_paths überhaupt keine Probleme in die Richtung gibt.

Ich hatte erst vermutet, dass es was mit der Sichtbarkeit von variablen in JS zu tun hat, doch selbst wenn ich die Variablen-Deklaration in eine extra JS Datei auslagere funktioniert es nicht.

Könnt ihr mir bitte helfen?


----------



## Sven Mintel (18. August 2009)

Moin,

der Code ist leider nur schlecht durchschaubar, wenn man nicht das sieht, was PHP da generiert.....könntest du bitte mal die HTML-Source posten.

Aber rein vom Prinzip her:
Wenn du einen PHP-Array hast, kannst du diesen wunderbar per json_encode() für JS verfügbar machen...das dürfte etwaige Fehlerquellen reduzieren.


----------



## Custom1 (18. August 2009)

Danke für die schnelle Hilfe. Ich war gerade dabei die HTML reinzustellen, als ich den Fehler schon selber gefunden habe. Es war eine Zeilenumbruch zu wenig, sodass ein Teil des Codes unabsichtlic auskommentiert wurde.
Danke wiegesagt für die Hilfe!


----------

