我正在尝试创建一个php函数,该函数将第一个上传的图像命名为a.png,下一个为b.png,并且在完成字母和数字后,它将继续为:aa.png,ab.png,ect(完成后扩展字符串大小)。我希望有一个字符数组按顺序排列,而不仅仅是字母表:
$charset = 'abcdefghijklmnopqrstuvwxyz';
$charset .= '0123456789';
$charset .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
它将存储最后一个图像名称(ect ab3.png),以便下次运行时可以在 ab4.png 继续。
有谁知道或有这样的功能?或者你们能帮帮我吗?
你有特别的理由想要这样做吗?或者您是否正在尝试想出一种创建唯一文件名的方法?如果是后者,那么看看PHP的uniqid函数。
在这种情况下,怎么样,它不能满足您的所有要求,但会让您更接近:
function createId($numId) {
$result = '';
$mod = 26;
$quotient = $numId;
while ($quotient >= 0) {
$result .= chr(65 + ($quotient % $mod));
$quotient = $quotient / $mod - 1;
}
return $result;
}
并使用以下调用:
print createId(0) . "n";
print createId(25) . "n";
print createId(26) . "n";
print createId(8) . "n";
print createId(9876) . "n";
给你:
一个
Z
机 管 局
我
赢得
只是按照你的要求做了一些草率的事情。
$id = 128;
$charset = 'abcdefghijklmnopqrstuvwxyz';
$charset .= '0123456789';
$charset .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$len = strlen($charset);
$ret = '';
$tmp = $id;
$it = ceil($tmp / $len);
for($i = 0; $i < $it; $i++) {
$ret .= $charset[($tmp > $len) ? 0 : $tmp % $len];
$tmp -= $len;
}
echo $ret;
$id
应该是数据库中的增量主 ID。
编辑:不完全是你想要的。没关系,接受丹的解决方案。