首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个功能会失败?

为什么这个功能会失败?
EN

Stack Overflow用户
提问于 2017-01-10 20:24:29
回答 3查看 95关注 0票数 3

我试图理解为什么这个功能不能工作。有人能教我怎么回事吗?

代码语言:javascript
复制
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;
}

此函数只返回--

而只是在函数之外回传值呢?这需要在课堂上吗?

代码语言:javascript
复制
$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,这是所需的结果。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-10 20:33:44

这是因为你叫global的方式。改变这些:

代码语言:javascript
复制
$convert = array_map(function($n){
    global $seed;
    return $seed[$n];
},$rand);

对此:

代码语言:javascript
复制
$convert = array_map(function($n) use ($seed){
    return $seed[$n];
},$rand);

瞧,这很管用。

票数 6
EN

Stack Overflow用户

发布于 2017-01-10 20:43:38

您正在尝试从全局范围中获取变量。

代码语言:javascript
复制
global $seed;

但是这个变量位于函数API的局部范围内。你必须像这里这样采取use

代码语言:javascript
复制
$convert = array_map(function($n) use($seed){
    return $seed[$n];
},$rand);
票数 2
EN

Stack Overflow用户

发布于 2017-01-11 02:05:15

或者相反:

代码语言:javascript
复制
$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

compat

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41577725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档