Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中为Javascript生成小而有效的变量名的算法_Javascript_Php_Ajax_Algorithm - Fatal编程技术网

在PHP中为Javascript生成小而有效的变量名的算法

在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开发一个组件框架,它从服务器端生成Javascript并在客户端呈现。此外,在Ajax通信中,组件的id和值从客户端传输到服务器。这些ID有意义且长度较大

我想用更小的名称来替换这些大id/变量,比如\uu、\u1、\u2、\uA或\uA,因此我需要一种算法来生成下一个有效的Javascript变量名,这样每当我调用get\uNext\uID函数时,它都会给我下一个唯一的变量名。目前我在PHP中选中了uniqid,但返回的值相当大


是否有任何方法或算法可以在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)