【发布时间】:2012-02-02 04:57:09
【问题描述】:
为什么这段代码有时只生成 4 个字符串?
function genID()
{
$id = '';
$values = '0123456789abcdefghijklmnopqrstuvwxyz';
for($i=0; $i < 5; $i++) :
$str = substr($values, rand(0, strlen($values)), 1);
if(!is_nan(acos($str)))
(mt_rand(0, 1)) ? $str = strtoupper($str) : '';
$id .= $str;
endfor;
return $id; // e.g: ifR8j
}
【问题讨论】:
-
if(!is_nan(acos($str))) (mt_rand(0, 1)) 到底是什么? $str = strtoupper($str) : '';应该在做什么?为什么要尝试将三角函数应用于字符?
-
来自
acosfloat acos ( float $arg )$arg 的手册是“以弧度表示的 arg 的反余弦”。 -
我这样做纯粹是为了懒惰,我可以把它拿出来手动输入 A-Z 但这仍然不能回答为什么它有时会返回 4?
-
随机 4 位 id 生成更简单的功能
-
我会说有时候,acos($str)(arccos of a character?!?等等,什么?)不是一个数字并且 mt_rand返回一个@987654325 @。因此,您在第 9 行到达您的条件的
''部分。完全按照您的要求执行;)问题是,您 尝试 对行上的条件做什么8-9?
标签: php string loops random for-loop