Ich habe eine Funktion, die bei Angabe eines Dateinamens und eines Verzeichnispfads prüft, ob das Verzeichnis bereits eine Datei mit demselben Namen enthält, und, falls ja, einen geänderten Dateinamen zurückgibt (durch Anhängen einer Zahl nach dem ersten Teil des Dateinamens). (Die Funktion get_filenames() ist eine CodeIgniter-Hilfsfunktion, die ein Array mit allen Dateinamen im angegebenen Verzeichnis erstellt).
Wenn ich versuche, das zurückgegebene Ergebnis des Funktionsaufrufs auszudrucken, erhalte ich nichts; wenn ich jedoch $new_filename in der else{}-Anweisung der Funktion selbst ausdrucke und dann einfach die Funktion aufrufe (anstatt ihren Wert zu drucken), funktioniert es!
Ich muss den Wert in der Funktion zurückgeben, nicht ausdrucken, da ich das Ergebnis eigentlich einer Variablen zur weiteren Verarbeitung zuweisen muss. (Im folgenden Beispiel habe ich nur das Ergebnis des Funktionsaufrufs gedruckt, um den Punkt zu verdeutlichen).
Die Funktion:
function avoid_conflicting_filenames($old_filename, $new_filename, $dir, $count)
{
$num = '';
if ($count > 0):
$num = $count;
endif;
$filename_arr = explode('.', $old_filename, -1);
$new_filename = $filename_arr[0] . $num . '.' . $filename_arr[1];
if (in_array($new_filename, get_filenames($dir))):
$count++;
avoid_conflicting_filenames($old_filename, $new_filename, $dir, $count);
else:
return $new_filename;
endif;
}
Und wo ich die Funktion aufrufe:
print avoid_conflicting_filenames('file.jpg', '', 'path/to/file', 0);
Das hat mich in den letzten Tagen in den Wahnsinn getrieben, daher wäre ich für jede Hilfe sehr dankbar! Danke!