我如何重構這個代碼,所以我只有1行分配$文件名值。簡單的重構
$i = 1;
$filename = $config->PHOTO_PATH . $list->ID . "_" . $i . ".jpg"
while(file_exists($filename))
{
doSomething();
$i++;
$filename = $config->PHOTO_PATH . $list->ID . "_" . $i . ".jpg";
}
我如何重構這個代碼,所以我只有1行分配$文件名值。簡單的重構
$i = 1;
$filename = $config->PHOTO_PATH . $list->ID . "_" . $i . ".jpg"
while(file_exists($filename))
{
doSomething();
$i++;
$filename = $config->PHOTO_PATH . $list->ID . "_" . $i . ".jpg";
}
$i = 1;
$ok=true;
while($ok)
{
$filename = $config->PHOTO_PATH . $list->ID . "_" . $i++ . ".jpg";
$ok=file_exists($filename)
if ($ok){
doSomething();
}
}
最佳答案至今 – 2013-03-25 09:05:54
只需更換你的下面的代碼:
$i++;
$filename = $config->PHOTO_PATH . $list->ID . "_" . $i . ".jpg";
這一個:
$filename = $config->PHOTO_PATH . $list->ID . "_" . ++$i . ".jpg";
應該可能使用預增加運算符。 – 2013-03-24 16:42:36
是的,我卻把它們,現在固定的,thaks爲察覺它:-) – Nelson 2013-03-24 16:43:43
$i = 1;
do {
doSomething();
$filename = sprintf('%s%s_%d.jpg', $config->PHOTO_PATH, $list->ID, $i++);
} while (file_exists($filename));
$filename = 'prefix' .
(preg_replace('/prefix([0-9]+)suffix/', '$1', array_pop(glob('prefix*suffix'))) + 1) .
'suffix';
有趣的解決方案之前,儘管存在一些非常模糊。是否保證'glob'返回排序結果?還要注意,這不是'doSomething()';我不知道這真的有多重要。 – deceze 2013-03-24 17:13:31
@deceze'glob'返回排序結果,但在此代碼不能插入'DoSomething的()',因爲它需要一個'while'如果必須調用每次檢查,並在一條線上,你不能插入一段時間。 – pietroalbini 2013-03-24 17:20:03
如果你想有一個明確的答案,說明這是什麼應該做的。我想你試圖找到一個沒有找到的文件名,但是'doSomething()'做了什麼? – deceze 2013-03-24 16:50:06