私は、ファイル名とディレクトリパスを指定すると、ディレクトリにすでに同じ名前のファイルが含まれているかどうかをチェックし、修正されたファイル名を返す場合は最初のファイル名の一部)。 (get_filenames()関数は、指定したディレクトリ内のすべてのファイル名の配列を作成するCodeIgniterヘルパ関数です)。PHP関数が値を返さない
返された関数呼び出しの結果を出力しようとすると、何も得られません。しかし、$ new_filenameを関数自体のelse {}文で出力した場合は、関数を(単に値を出力するのではなく)呼び出すだけで動作します。
実際に結果を変数に代入して処理する必要があるため、関数の値を返す必要があります。
機能(下記の例では、私はちょうどポイントを証明するために、関数呼び出しの結果を印刷しました):
print avoid_conflicting_filenames('file.jpg', '', 'path/to/file', 0);
:
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;
}
そして私は、関数を呼び出す場所これは過去の日に私を狂気にさせているので、どんな助けでも大歓迎です!ありがとう。