I have a function which, given a filename and directory path, checks if the directory already contains a file with the same name and if so returns an amended filename (by appending a number after the first part of the filename). (The get_filenames() function is a CodeIgniter helper function which creates an array of all the filenames in the specified directory.)
Ben işlev çağrısı döndürülen sonucu yazdırmak çalıştığınızda, ben bir şey olsun; Ben else fonksiyonunun kendisi {} deyimi $ new_filename yazdırmak ama eğer, o zaman sadece (daha doğrusu değer baskı daha) işlevini çağırın, bu işe yarıyor!
Ben aslında daha fazla işlem için bir değişkene atamak için ihtiyaç olarak yazdırın, fonksiyonu değerini değil dönmek gerekir. (Aşağıdaki örnekte ben sadece noktayı göstermek için işlev çağrısının sonucu basılı ettik.)
Fonksiyonu:
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;
}
Ve ben işlevini çağırır burada:
print avoid_conflicting_filenames('file.jpg', '', 'path/to/file', 0);
Bu son gün için beni deli olmuştur, bu yüzden herhangi bir yardım büyük mutluluk duyacağız! Teşekkürler.