在PHP中为Javascript生成小而有效的变量名的算法
我正在用PHP开发一个组件框架,它从服务器端生成Javascript并在客户端呈现。此外,在Ajax通信中,组件的id和值从客户端传输到服务器。这些ID有意义且长度较大 我想用更小的名称来替换这些大id/变量,比如\uu、\u1、\u2、\uA或\uA,因此我需要一种算法来生成下一个有效的Javascript变量名,这样每当我调用get\uNext\uID函数时,它都会给我下一个唯一的变量名。目前我在PHP中选中了uniqid,但返回的值相当大在PHP中为Javascript生成小而有效的变量名的算法,javascript,php,ajax,algorithm,Javascript,Php,Ajax,Algorithm,我正在用PHP开发一个组件框架,它从服务器端生成Javascript并在客户端呈现。此外,在Ajax通信中,组件的id和值从客户端传输到服务器。这些ID有意义且长度较大 我想用更小的名称来替换这些大id/变量,比如\uu、\u1、\u2、\uA或\uA,因此我需要一种算法来生成下一个有效的Javascript变量名,这样每当我调用get\uNext\uID函数时,它都会给我下一个唯一的变量名。目前我在PHP中选中了uniqid,但返回的值相当大 是否有任何方法或算法可以在PHP中生成这些类型的名
是否有任何方法或算法可以在PHP中生成这些类型的名称请注意,函数必须首先从尽可能最小的变量名开始,然后从更高的顺序开始。您可以在php中增加字母字符:
for( $x = 'a'; $x!='z'; $x++) {
echo "$x\n";
}
我相信下面的课程可能会起作用。可以很容易地扩展它以使用更多字符。为了简单起见,我只使用了小写字符
class IdGenerator {
function IdGenerator() {
$this->id = 0;
}
function getId() {
$ret = $this->getStringForId($this->id);
$this->id += 1;
return $ret;
}
function getStringForId($id) {
$res = '';
do {
$res = chr( ord('a') + ($id % 26) ) . $res;
$id = (int)($id / 26) - 1;
} while ($id >= 0);
return '_' . $res;
}
}
该类只保留了一个简单的计数器,指示到目前为止它已经生成了多少ID。函数getStringForId
为给定的每个索引生成唯一的最小字符串
如果你运行这个测试
$g = new IdGenerator();
for ($i = 0; $i < 30; $i++) {
echo $g->getId() . "\n";
}
$g=新的IdGenerator();
对于($i=0;$i<30;$i++){
echo$g->getId()。“\n”;
}
你会得到
_a
_b
_c
...
_y
_z
_aa
_ab
_交流电
_广告你为什么关心名字的大小?它们并不重要。如果带宽有问题,压缩数据(即脚本)。您可以始终使用uniqid的一部分:
echo substr(uniqid(“”,true),-6)