0

我正在尝试创建一个 php 函数来命名第一个上传的图像:a.png,下一个,b.png,在完成字母和数字后,它将继续为:aa.png,ab.png , 等(完成后扩展字符串大小)。我想按顺序排列一系列字符,而不仅仅是字母表:

$charset = 'abcdefghijklmnopqrstuvwxyz';
$charset .= '0123456789';
$charset .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

它将存储最后一个图像名称(ect ab3.png),以便下次运行时可以在 ab4.png 处继续。

有谁知道或有这样的功能?或者你们能帮帮我吗?

4

2 回答 2

1

你有什么特别的理由想要这样做吗?或者您是否想找到一种创建唯一文件名的方法?如果是后者,那么看看 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

AA

韩元

于 2013-10-01T23:18:08.160 回答
1

只是按照你的要求做了一些草率的事情。

$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 。

编辑:不完全是你想要的。没关系,采取丹的解决方案。

于 2013-10-01T23:56:28.930 回答