我正在尝试将JavaScript转换为php,但我不确定如何将以下JavaScript函数中的Math.random()
和hexChars
方法转换为PHP,感谢您的帮助
JavaScript功能:
function generateId(){
var a=[],b;
a[8]=a[13]=a[18]=a[23]="-";
a[14]="4";
for(i=0;i<36;i++)
if(!a[i]){
b=0|Math.random()*16;
a[i]=hexChars[i==19?b&3|8:b]
}
return a.join("")
}
PHP函数到目前为止我转换了:
function generateId(){
$a = array();
$a[8]=$a[13]=$a[18]=$a[23]="-";
$a[14]="4";
for($i=0;$i<36;$i++){
if(!$a[$i]){
// not sure what to do here
}
}
}
编辑: 它会创建一个这样的字符串:902EA4DD-5445-4435-93F2-2A5203818255
答案 0 :(得分:2)
hexChars
是十六进制字符数组。<?php
function generateId(){
$hexChars = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F');
$a = array();
$a[8] = $a[13] = $a[18] = $a[23] = "-";
$a[14] = "4";
for ($i=0; $i < 36; $i++)
if (!isset($a[$i]))
$a[$i] = $hexChars[mt_rand(0,15)];
ksort($a);
return implode($a);
}
echo generateId();
?>
答案 1 :(得分:2)
我会重做整个事情:
function generateId() {
$id = md5(mt_rand());
return substr($id, 0, 8) . '-' . substr($id, 9, 4) . '-'
. substr($id, 13, 4) . '-' . substr($id, 17, 4) . '-'
. substr($id, 21, 4) . '-' . substr($id, 25);
}
You can play around包含您用于md5()
函数的数据,如果您需要更多熵,但这应该可以让您开始。
答案 2 :(得分:2)
b = 0|Math.random()*16;
返回0到15之间的随机整数。等效的PHP代码是
$b = rand(0,15);
http://php.net/manual/en/function.rand.php
a[i]=hexChars[i==19?b&3|8:b]
hexChars是一个数组。在PHP中,您可以使用数组表示法从字符串索引字符:
$hexChars = "0123456789ABCDEF"