我如何在PHP中命名我的文件00,01,02等

时间:2011-08-30 09:40:54

标签: php numbers

我有一些我要上传的文件。当我上传它们时,我希望第一个被编号为00,第二个被编号为01.我写了一个函数来获取最新的数字,但当然,这不起作用

$i = 00;
while($i < $filecount)
{
    if(!file_exists("../photo/$i.jpg"))
    {

         return $i;
         print($i);
    }
    else if(file_exists("../photo/$i.jpg")) {
        $i = $i + 01;
    }

但是现在,当我上传文件时,它只是编号:0,1,2,3。

我收到了一些新代码:

 function getFileNumber() {
            $i = 0;
            while ($i < $filecount) {

                $fn = sprintf("../photo/%02d.jpg", $i); 
                if (!file_exists($fn)) {

                    return $i;
                } else {
                    $i ++;
                }
            }
        }

但每次都会返回00,但我想去00,01,02,03。有人有什么想法吗?

4 个答案:

答案 0 :(得分:2)

整数文字不包含任何格式。 1是值 one ,它不能是“01”,这是一个格式问题。因此,格式您的号码:

$file = sprintf('%2u.jpg', $i);

答案 1 :(得分:1)

您可以使用

echo str_pad($i, 2, "0", STR_PAD_LEFT);

此外,返回后的print()将永远不会执行,并使用if / else而不是if / elseif。

答案 2 :(得分:0)

查看允许非常灵活的字符串格式化的sprintf() - 特别是检查填充和宽度说明符。你正在寻找

的内容
$i = 0;
while ($i < $filecount)
{
    $fn = sprintf("../photo/%02d.jpg", $i);
    if (!file_exists($fn))
    {
         return $i;
    }
    else {
        $i++;
    }
}

答案 3 :(得分:0)

  1. print($i)是一个死代码 - 它永远不会被执行
  2. 其次,您无需再次检查else if(file_exists("../photo/$i.jpg"))
  3. 00不是有效整数,它简化为0,因为01简化为1(实际上它被视为八进制数字,因此0809无效)
  4. 因此,要拥有真实的000102,您必须使用spritf格式化输出

    $q=0;
    $file_suffix = sprintf("%02d", $q);
    if(!file_exists("../photo/{$file_suffix}.jpg")){
         print($i);
         return $i;
    }
    else{
        $q+=1;
    }