V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  feiyuanqiu  ›  全部回复第 40 页 / 共 41 页
回复总数  815
1 ... 32  33  34  35  36  37  38  39  40  41  
2014-10-10 12:09:34 +08:00
回复了 cdffh 创建的主题 PHP php 如何实现尽可能短的唯一 id
又想了下,真是不觉得有必要上那么高大上的算法,如果数据在单表,直接下面这个代码就行了,如果是多表,给每个表一个单独标识加最前面就行

<?php
$i = 1000;
while ($i--) {
var_dump(_uniqId());
}
exit;
function _uniqId()
{
static $now = 100000000;
return _10262($now++);
}

function _10262($n)
{
$b = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
$cn = $b[$n % 62];
if (($nn = floor($n / 62)) > 0) {
$cn .= _10262($nn);
}
return strrev($cn);
}
2014-10-10 11:31:10 +08:00
回复了 cdffh 创建的主题 PHP php 如何实现尽可能短的唯一 id
@cdffh
你想太多了,你可以把原数据保存在数据表里面,获取到每个数据的自增主键。
然后把这个自增主键转换成62进制,也就是这种大小写字母的格式就ok了。完全不需要hash什么的
2014-10-10 11:21:32 +08:00
回复了 cdffh 创建的主题 PHP php 如何实现尽可能短的唯一 id
用大小写字母 (52) + 数字 (10) = 62

>>> 62*62*62*62*62
916132832

只需要5位就能获取到9亿的排列
2014-10-06 19:35:06 +08:00
回复了 yunpaa 创建的主题 问与答 有个是黑色台球 8 做 logo 的社区
s1嘛
少写了个 rewrite
rewrite ^/u/check?u=1009$ /1.txt last;
记得改了之后要重启服务器
^/u/check?u=1009$ /1.txt last;
@zakokun 实际上是zzzzyz
for ($c = 'aaaaa', $i = 0; $i < 11881376; $i++, $c++) { echo $c; }
@zakokun ...我的写错了,不能用 <=号,只能用< 或者!=。

原因是:在PHP中,对字母进行增减运算时遵循的是Perl的方式而不是C的,在Perl中,是通过首字母比较大小:比如,b > az。

具体到这里:
当$i = 'zzzzz'的时候,$i <= 'zzzzz'是成立的,循环不会终止,这时$i++ => 'aaaaaa','aaaaaa' < 'zzzzz',循环继续...直到$i = 'yzzzzz',这时,$i < 'zzzzz',$i++ => 'zaaaaa', $i > 'zzzzz',循环终止。所以最后一个输出是 ’yzzzzz';

http://stackoverflow.com/questions/4098345/why-doesnt-this-code-simply-print-letters-a-to-z

修改之后是这样的:
for ($i = 'aaaaa'; $i < 'zzzzz'; $i++) { echo $i; } echo $i;
或者:
$c = 'aaaaa';
for ($i = 0; $i < 11881376; $i++) { echo $c++; }
@zakokun ...不用这么复杂,字母都是ascii码,可以用循环来生成的,一行代码就解决了
26*26*26*26*26*6/1024/1024 = 67
你的结果是对的...
@P233 终于遇见一个用 birds of paradise 主题的了...有品位!
for ($i = 'aaaaa'; $i <= 'zzzzz'; $i++) {
var_dump($i);
}
好了,php的
31楼的回复有问题,我改了一下...但是现在有需求要做,待会才有时间调试...
for ($i = 'a'; $i <= 'zzzzz'; $i++) {
var_dump($i);
}
2014-09-04 20:11:00 +08:00
回复了 refresh 创建的主题 问与答 求一个查询最低价的 sql
表应该还有个主键吧...试了一下,用了子查询,性能有问题...坐等其他大大的方法

SELECT
a.*
FROM
test_2 a
JOIN
(SELECT
area_id, product_id, MIN(price) AS price
FROM
test_2
GROUP BY area_id, product_id) b
ON a.`area_id` = b.area_id
AND a.`product_id` = b.product_id
AND a.`price` = b.price
2014-09-04 16:41:26 +08:00
回复了 frontman 创建的主题 程序员 javascript 中!function(){} 方法前面一个分号是啥意思
@Zhang haha
所以回复的时候要认真思考一下呢...
2014-08-30 20:57:56 +08:00
回复了 duolab 创建的主题 问与答 求这个字体是什么?
方正报宋
2014-08-28 14:50:09 +08:00
回复了 liaoyuan 创建的主题 酷工作 [上海徐汇] 急招 PHP 服务端开发, 预算在 15k-20k 不封顶
@mornlight 看不出来有什么问题
2014-08-28 13:12:04 +08:00
回复了 Livid 创建的主题 Notes V2EX Notes 的 Markdown 功能部署完毕
# 回复支持markdown吗?
## test h2

- ul 1
- ul 2

```php
class klass
{
var $int = 1;
var $double = 1.23;
var $string = 'hi';
var $array = array('key' => 'value');

public function __construct()
{
echo 'you\'re arrived';
}
}
```
1 ... 32  33  34  35  36  37  38  39  40  41  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2826 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 09:39 · PVG 17:39 · LAX 01:39 · JFK 04:39
Developed with CodeLauncher
♥ Do have faith in what you're doing.