Как мне назвать мои файлы 00, 01, 02 и так далее в PHP - PullRequest
0 голосов
/ 30 августа 2011

У меня есть несколько файлов, которые я хочу загрузить.И когда я загружаю их, я хочу, чтобы первый был пронумерован как 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 ]

2 голосов
/ 30 августа 2011

Целочисленные литералы не содержат никакого форматирования. 1 - это значение one , оно не может быть "01", это проблема форматирования. Таким образом, формат ваши номера:

$file = sprintf('%2u.jpg', $i);
1 голос
/ 30 августа 2011

Вы можете использовать

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

Кроме того, ваш print () после возврата никогда не будет выполнен и использовать if / else вместо if / elseif.

0 голосов
/ 30 августа 2011
  1. print($i) - мертвый код - он никогда не будет выполнен
  2. Во-вторых, вам не нужно проверять else if(file_exists("../photo/$i.jpg")) снова.
  3. 00 нетдействительное целое число, оно упрощается до 0, а 01 упрощается до 1 (на самом деле оно трактуется как восьмеричные цифры, поэтому 08 и 09 недопустимо)

Таким образом, чтобы иметь действительное значение 00, 01, 02 вам нужно будет отформатировать вывод: spritf

$q=0;
$file_suffix = sprintf("%02d", $q);
if(!file_exists("../photo/{$file_suffix}.jpg")){
     print($i);
     return $i;
}
else{
    $q+=1;
}
0 голосов
/ 30 августа 2011

Проверьте sprintf () , который позволяет довольно гибкое форматирование строки - особенно проверьте спецификаторы заполнения и ширины. Вы ищете что-то вроде

$i = 0;
while ($i < $filecount)
{
    $fn = sprintf("../photo/%02d.jpg", $i);
    if (!file_exists($fn))
    {
         return $i;
    }
    else {
        $i++;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...