J'ai une fonction qui, avec un nom de fichier et un chemin de répertoire, vérifie si le répertoire contient déjà un fichier avec le même nom et retourne un nom de fichier modifié (en ajoutant un une partie du nom de fichier). (La fonction get_filenames() est une fonction auxiliaire CodeIgniter qui crée un tableau de tous les noms de fichiers dans le répertoire spécifié.)La fonction PHP ne renvoie pas de valeur
Lorsque j'essaie d'imprimer le résultat renvoyé de l'appel de fonction, je n'ai rien; mais si j'imprime $ new_filename dans l'instruction else {} de la fonction elle-même, alors il suffit d'appeler la fonction (plutôt que d'en imprimer la valeur), ça marche!
Je dois retourner la valeur dans la fonction, ne pas l'imprimer, car j'ai vraiment besoin d'affecter le résultat à une variable pour un traitement ultérieur. (Dans l'exemple ci-dessous, je viens imprimais le résultat de l'appel de fonction pour démontrer le point.)
La fonction:
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;
}
Et où j'appelle la fonction:
print avoid_conflicting_filenames('file.jpg', '', 'path/to/file', 0);
Cela m'a rendu fou pour le jour passé, donc toute aide serait grandement appréciée! Merci.