$blogDir = 'blog/';
$blogDirHandle = opendir($blogDir);
$checkingFile = '';
$number = 0;
$codeNumber = '-'.$number.'-';
if($blogDirHandle = opendir('blog/'))
{
while(false !== ($checkingFile = readdir($blogDirHandle)))
{
if($checkingFile != '.' && $checkingFile != '..' && !is_dir($blogDir.$checkingFile) && false !== strpos($checkingFile, $codeNumber))
{
$number++;
$codeNumber = '-'.$number.'-';
}
}
closedir($blogDirHandle);
}
上記のコードは、$ blogDirに現在の$ codeNumberで始まるファイルがあるかどうかを確認するためのものです。そうであれば、$ numberをインクリメントし($ codeNumberを変更します)、$ codeNumberで始まるファイルがなくなるまでチェックをループします。 その後、新しい$ codeNumberで名前が付けられた複数のファイルを作成します。PHP:何らかの理由で値が増えない
しかし、何らかの理由で動作しません。
ディレクトリに-0-filename.phpというファイルが1つしかない場合は、値が増え、作成する次のファイルにはプレフィックスとして-1が付きます。しかし、2番目のファイルを作成すると、$ numberはインクリメントされません。プレフィックスを含む重複ファイルを作成するだけです(-0-filename.php、-1-othername.php、-1-thirdname.php)
助けてください。
ループから出てくるファイル名を 'echo'しました(つまり、' $ checkFile')?おそらく '-1-'ファイルが最初に検索され、 '$ number = 0'がインクリメントされてから' -0- 'ファイルが検索され、' $ checkingFile = '/ blog/-0- ... 'と '$ number = 1'なので、条件は失敗し、あなたのループは' $ number = 1'を残して終了します。ちょうど推測です。 – Yaniro
どの時点で$ checkFileをエコーする必要がありますか? –
'while()' – Yaniro