我试图理解为什么这个功能不能工作。有人能教我怎么回事吗?
function API() {
$seed = str_split(md5(rand(0000000,9999999)));
$rand = array_rand($seed, 10);
$convert = array_map(function($n){
global $seed;
return $seed[$n];
},$rand);
$var1 = implode('',$convert);
$seed = str_split(md5(rand(0000000,9999999)));
$rand = array_rand($seed, 10);
$convert = array_map(function($n){
global $seed;
return $seed[$n];
},$rand);
$var2 = implode('',$convert);
$seed = str_split(md5(rand(0000000,9999999)));
$rand = array_rand($seed, 10);
$convert = array_map(function($n){
global $seed;
return $seed[$n];
},$rand);
$var3 = implode('',$convert);
$NewRecordLocatorID = $var1 . '-' . $var2 . '-' . $var3;
return $NewRecordLocatorID;
}此函数只返回--
而只是在函数之外回传值呢?这需要在课堂上吗?
$seed = str_split(md5(rand(0000000,9999999)));
$rand = array_rand($seed, 10);
$convert = array_map(function($n){
global $seed;
return $seed[$n];
},$rand);
$var1 = implode('',$convert);
$seed = str_split(md5(rand(0000000,9999999)));
$rand = array_rand($seed, 10);
$convert = array_map(function($n){
global $seed;
return $seed[$n];
},$rand);
$var2 = implode('',$convert);
$seed = str_split(md5(rand(0000000,9999999)));
$rand = array_rand($seed, 10);
$convert = array_map(function($n){
global $seed;
return $seed[$n];
},$rand);
$var3 = implode('',$convert);
$NewRecordLocatorID = $var1 . '-' . $var2 . '-' . $var3;
echo $NewRecordLocatorID;上面的内容将返回1d0f09fd36-1e656c979d-3468a68fea,这是所需的结果。
发布于 2017-01-10 20:33:44
这是因为你叫global的方式。改变这些:
$convert = array_map(function($n){
global $seed;
return $seed[$n];
},$rand);对此:
$convert = array_map(function($n) use ($seed){
return $seed[$n];
},$rand);瞧,这很管用。
发布于 2017-01-10 20:43:38
您正在尝试从全局范围中获取变量。
global $seed;但是这个变量位于函数API的局部范围内。你必须像这里这样采取use
$convert = array_map(function($n) use($seed){
return $seed[$n];
},$rand);发布于 2017-01-11 02:05:15
或者相反:
$id = sprintf("%s-%s-%s", bin2hex(random_bytes(5)), bin2hex(random_bytes(5)), bin2hex(random_bytes(5)));http://php.net/manual/en/function.random-bytes.php
https://stackoverflow.com/questions/41577725
复制相似问题