У меня есть функция, которая с учетом имени файла и пути к каталогу проверяет, содержит ли каталог файл с тем же именем, и если это так возвращает исправленное имя файла (путем добавления числа после первого часть имени файла). (Функция get_filenames() является вспомогательной функцией CodeIgniter, которая создает массив из всех имен файлов в указанном каталоге.)Функция PHP не возвращает значение
Когда я пытаюсь распечатать возвращенный результат вызова функции, я ничего не получаю; но если я напечатаю $ 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);
Это заставило меня сумасшедшим на прошлый день, поэтому любая помощь будет принята с благодарностью! Благодарю.