如何让这个函数在PHP中运行一次?

如何让这个函数在PHP中运行一次?,php,Php,我试图让随机函数运行一次,这样每个用户都有一个唯一的字符串 我不明白为什么它不起作用。我使用了静态变量,但它仍然运行不止一次 有什么建议吗 多谢各位 // function RandomStr($length = 10) { static $state = false; if ($state) return; $state = true; $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJ

我试图让随机函数运行一次,这样每个用户都有一个唯一的字符串

我不明白为什么它不起作用。我使用了静态变量,但它仍然运行不止一次

有什么建议吗

多谢各位

//
function RandomStr($length = 10)
{
    static $state = false;
    if ($state) return;

    $state = true;

    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}
echo RandomStr();
//
//
函数RandomStr($length=10)
{
静态$state=false;
如果($状态)返回;
$state=true;
$characters='0123456789abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz';
$charactersLength=strlen($characters);
$randomString='';
对于($i=0;$i<$length;$i++){
$randomString.=$characters[rand(0,$charactersLength-1)];
}
返回$randomString;
}
echo-RandomStr();
//

静态变量的状态仅存在于单个请求的范围内。您的建议是希望保留每个用户的状态,而不是每个请求的状态。要做到这一点,您需要在PHP之外维护状态,比如在数据库或会话中(如果希望保留每个会话的状态)

e、 g

函数RandomStr($length=10)
{
会话_start();
$state=$\u会话['state']??false;
如果($状态)返回;
$\u会话['state']=true;
$characters='0123456789abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz';
$charactersLength=strlen($characters);
$randomString='';
对于($i=0;$i<$length;$i++){
$randomString.=$characters[rand(0,$charactersLength-1)];
}
返回$randomString;
}

当然,请注意,在函数内部执行
session\u start()
可能是不现实的。因此,仅仅认为这只是一个人为的例子。

< P>静态变量的状态仅存在于单个请求的范围内。您的建议是希望保留每个用户的状态,而不是每个请求的状态。要做到这一点,您需要在PHP之外维护状态,比如在数据库或会话中(如果希望保留每个会话的状态)

e、 g

函数RandomStr($length=10)
{
会话_start();
$state=$\u会话['state']??false;
如果($状态)返回;
$\u会话['state']=true;
$characters='0123456789abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz';
$charactersLength=strlen($characters);
$randomString='';
对于($i=0;$i<$length;$i++){
$randomString.=$characters[rand(0,$charactersLength-1)];
}
返回$randomString;
}

当然,请注意,在函数内部执行
session\u start()
可能是不现实的。所以,仅仅认为这只是一个捏造的例子。

减少你的函数-这似乎是我预期的工作:

<?php

function return_true_once()
{
    static $state = false;
    if ($state) return;

    $state = true;

    return true;
}
var_dump(return_true_once());
var_dump(return_true_once());

减少你的功能-这似乎像我期望的那样起作用:

<?php

function return_true_once()
{
    static $state = false;
    if ($state) return;

    $state = true;

    return true;
}
var_dump(return_true_once());
var_dump(return_true_once());
bool(true)
NULL