webForumDet fria alternativet

problem med flerdimensionell array

3 svar · 233 visningar · startad av Niehls

NiehlsMedlem sedan juli 2002131 inlägg
#1

första gången jag försöker leka med en tvådimensionell array, så jag skulle kunna göra helt fel..
iaf.. jag försöker få in en massa bilder som ligger i olika kataloger i en array av formen $files[katalog][fil]
t.ex $files[lantliv][0] ger bruk.jpg
iaf. här är funktionen:


function get_all_images_on_server()
{
	$handle=opendir(images);
	
		while($directory=readdir($handle))
		{
			if(!($directory==".." || $directory=="."))
			{
				if(is_dir("images/$directory"))
				{
					echo "now entering images/$directory<br>";
					
					$new_handle=opendir("images/$directory");
					
								$index=0;
						while($file_in_sub_dir=readdir($new_handle))
						{
							if(!($file_in_sub_dir==".." || $file_in_sub_dir=="."))
							{
								echo "now inside...checking $file_in_sub_dir<br>";
	
	
										echo "trying to create variable files[$directory][$index]<br>";
									$files = array ( "$directory"  => array ( "$index" => "$file_in_sub_dir"));

										echo "result: $files[$directory][$index]<br>";
									$index++;

							}
						}
				}
			}
			
		}
}

som ni ser har jag lagt in lite text för felsökningen. detta genereras:
now entering images/lantliv
now inside...checking 11.jpg
trying to create variable files[lantliv][0]
result: Array[0]
now inside...checking 12.jpg
trying to create variable files[lantliv][1]
result: Array[1]
now inside...checking 13.jpg
trying to create variable files[lantliv][2]
result: Array[2]
now inside...checking 16.jpg
trying to create variable files[lantliv][3]
result: Array[3]
o.s.v. o.s.v.
vad är det som händer?
resultatet skall ju bli filnamnet...

MatteMedlem sedan aug. 20002 975 inlägg
#2

Tycker vid första påseende att du skulle fått utskriften rätt.
Men däremot skriver du hela tiden över de tidigare inlästa filnamnen med:

$files = array ( ""  => array ( "" => "$file_in_sub_dir"));

Skriv istället:

$files[$directory][$index] = $file_in_sub_dir;

Vill du, underutvecklandet, kolla en arrays uppbyggnad så använd den här koden:

echo "<pre>";
print_r($files);
echo "</pre>";
NiehlsMedlem sedan juli 2002131 inlägg
#3

been there, done that.
började med $files[$directory][$index] men det fnukade inte heller....
vad kan vara probbet?

edit:
humm om jag lägger till var_dump($files[$directory][$index]); efter echo "result..."-delen skriver den ut namnet..skumt.
jaja...det borde väl lösa sig nu

MatteMedlem sedan aug. 20002 975 inlägg
#4

Sen har vi förstås själva utskriften. Array-element rakt upp och ner i strängar brukar stöka till sig. Skriv så här:

echo "result: {$files[$directory][$index]}<br>";

// eller

echo "result: ".$files[$directory][$index]."<br>";
134 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)