PHP Geltungsbereich von Variablen / Arrays?

chaos2oo2

Lt. Junior Grade
Registriert
Nov. 2011
Beiträge
326
Hallo,

ich habe ein kleines Problem. Und zwar geht es um dieses Codestück innerhalb eines Loops über die Dateien eines Ordners.

Ich möchte mir ein zweites Array anlegen mit allen Dateien zu einem bestimmten Änderungsdatum.

$pics habe ich ganz oben im Coding außerhalb jeglicher Schleifen definiert. Das Problem ist nun, dass das $subArray von $pics immer nur 1 Element enthält. Ich vermute es hängt damit zusammen, dass $subArray = array() im Codeblock definiert wird und dann im array_key_exists wieso auch immer nicht verwendet wird.

Ich komme aus der C++ Welt und finde grad iwie den Fehler nicht. Kann mir wer helfen?

PHP:
	  $ft = filemtime($entry);
		  
	  if(array_key_exists($ft, $pics)){
				  
		  $subArray = $pics[$ft];
		  $subArray[$entry] = $entry;


	  }else{
		  $subArray = array();
		  $subArray[$entry] = $entry;		
		  $pics[$ft] = $subArray;
		  
	  }


Gruß
chaos2oo2
Ergänzung ()

hier mal der Inhalt des Array über den Verlauf:

Code:
Array ( [16c96266-c759-4017-8693-f2ed170a0b17.jpg] => 16c96266-c759-4017-8693-f2ed170a0b17.jpg ) 
Array ( [16c96266-c759-4017-8693-f2ed170a0b17.jpg] => 16c96266-c759-4017-8693-f2ed170a0b17.jpg [89a1467a-7adc-454e-9950-8f6ceef5a3fe.jpg] => 89a1467a-7adc-454e-9950-8f6ceef5a3fe.jpg ) 
Array ( [16c96266-c759-4017-8693-f2ed170a0b17.jpg] => 16c96266-c759-4017-8693-f2ed170a0b17.jpg [8b2981a1-6e32-4e4e-9ac9-aa446a6ea269.jpg] => 8b2981a1-6e32-4e4e-9ac9-aa446a6ea269.jpg ) 
Array ( [16c96266-c759-4017-8693-f2ed170a0b17.jpg] => 16c96266-c759-4017-8693-f2ed170a0b17.jpg [9df6ead0-6702-4838-b87c-0f089b220992.jpg] => 9df6ead0-6702-4838-b87c-0f089b220992.jpg )
Ergänzung ()

der letzte Wert wird immer wieder überschrieben


Hat sich erledigt:

PHP:
	  $ft = filemtime($entry);
		  
	  if(array_key_exists($ft, $pics)){
				  
		  $subArray = $pics[$ft];
		  $subArray[$entry] = $entry;

	-->	  $pics[$ft] = $subArray;

	  }else{
		  $subArray = array();
		  $subArray[$entry] = $entry;		
		  $pics[$ft] = $subArray;
		  
	  }

Das Array muss nochmal Weggeschrieben werden, scheinbar wird das Array beim Zugriff über den Schlüssel erstmal kopiert anstatt referenziert.
 
Zuletzt bearbeitet:
Dann sollte es aber auch so ausreichen:
PHP:
$ft = filemtime($entry);

if(array_key_exists($ft, $pics)){

    $pics[$ft][$entry] = $entry;

}else{
    $pics[$ft] = [];
}
 

Ähnliche Themen

Zurück
Oben