Fuktions Rückgabewert leer

Igel-own

Grünschnabel
Hi Jungs und Mädels,

ich habe da ein kleines Problem bei einer Funktion. Auch nach der Googlesuche oder Forensuche bin ich auf keine passende Anwort gekommen. Deshalb würde ich mich sehr freuen wenn ihr mir weiterhelfen könnt.

Und zwar habe ich eine Funktion die vor einem Upload von einer Datei (in meinem Fall ein Bild), wenn es die Datei schon gibt, mir einen neuen Dateinamen mit Endung (1) (2) usw zurück gibt.

Leider gibt sie mir iwie nichts zurück oder ich habe da etwas übersehen...

Hier ein ausschnitt aus meinem Code:

PHP:
$img_file_name = ''.createfile($_FILES['datei'.$i]['name'],0,$img_file_tmp,$path);

function createfile($img_file_name,$counter,$img_file_tmp,$path){
		$file_with_path = ''.$path.$img_file_name;
		if(file_exists($file_with_path)){
			$counter++;
			$new_file_name = $img_file_name."(".$counter.")";
			createfile($new_file_name,$counter,$img_file_tmp,$path);
		}else{
			return (''.$img_file_name);	
		}
	}

Vielen Dank schonmal
 
Im Falle von "Datei existiert" erstellst du zwar den Namen neu, gibst ihn mit return aber nicht zurück. Richtigerweise sollte es wohl so aussehen:

PHP:
function createfile($img_file_name,$counter,$img_file_tmp,$path){
        $file_with_path = ''.$path.$img_file_name;
        if(file_exists($file_with_path)){
            $counter++;
            $new_file_name = $img_file_name."(".$counter.")";
            return createfile($new_file_name,$counter,$img_file_tmp,$path); // Hier noch return eingefügt
        }else{
            return (''.$img_file_name);    
        }
    }
 
Im Falle von "Datei existiert" erstellst du zwar den Namen neu, gibst ihn mit return aber nicht zurück.

Sehr vielen Dank schonmal für deine Hilfe.

Jedoch ist dieses ja eine Rekursion und die Funktion ruft sich ja so oft wieder selber auf bis die Datei nicht mehr existiert und soll dann den richtigen namen zurück geben.

Ich würde mich über mehr Hilfe sehr freuen.

EDIT: Klappt doch so wie du sagtest.. super danke...
 
Zuletzt bearbeitet:
Ich weiß :D Ich vermute aber mal, du weißt nicht, warum es doch funktioniert. ;-)

Doch, dank dir hab ichs verstanden. Der datensatz geht sonst verloren da er sich den datensatz beim letzten mal nur selber wieder zurück gibt und dann wieder aufhört.. aber man kann den quellcode somit auch viel kürzer fassen... Danke nochmal... Ach ja rekursion ist nicht einfach zu erklären^^
 
Zurück