我有一些我要上传的文件。当我上传它们时,我希望第一个被编号为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。有人有什么想法吗?
答案 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)
print($i)
是一个死代码 - 它永远不会被执行else if(file_exists("../photo/$i.jpg"))
。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;
}