У меня есть функция, которая, учитывая имя файла и путь к каталогу, проверяет, содержит ли каталог уже файл с таким же именем, и, если это так, возвращает измененное имя файла (добавляя число после первой части имени файла).
(Функция get_filenames () является вспомогательной функцией CodeIgniter, которая создает массив всех имен файлов в указанном каталоге.)
Когда я пытаюсь распечатать возвращенный результат вызова функции, я ничего не получаю; но если я напечатаю $ new_filename в операторе else {} самой функции, то просто вызову функцию (вместо вывода ее значения), она работает!
Мне нужно возвращать значение в функции, а не печатать его, поскольку мне действительно нужно присвоить результат переменной для дальнейшей обработки. (В приведенном ниже примере я только что напечатал результат вызова функции, чтобы продемонстрировать точку.)
Функция:
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;
}
И где я вызываю функцию:
print avoid_conflicting_filenames('file.jpg', '', 'path/to/file', 0);
Это сводило меня с ума в течение последнего дня, поэтому любая помощь будет принята с благодарностью! Спасибо.