我如何重构这个代码,所以我只有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