我的 php 代码运行、加载,但没有输出

my php code runs, loads, but no outputs

我试图创建一个只生成许可证密钥的程序。这是:

<?php

function gen_code_alpha()
{
    $alpha = '';

    for ($i = 0; $i <= 9; $i++) {
        $alpha .= $i;
    }

    // This attaches alphabets from 'a' to 'z' to our $alpha
    for ($i = 65; $i <= 122; $i++) {
        $alpha .= chr($i);
    }
}

function gen_code($len = 1)
{
    gen_code_alpha();
    global $alpha;

    $strlen = strlen($alpha);

    $code = '';
    for ($k = 0; $k < $len; $k++) {
        $i = $rand(0, $strlen -1);// now wanna randomly generate the code
        $code .= substr($alpha, $i, 1);
    }

    return $code;
}

function gen_license_key()
{
    $licenseKey = gen_code(4) . '-' .
                  gen_code(4) . '-' .
                  gen_code(4) . '-' .
                  gen_code(4) . '-' .
                  gen_code(2);
}

gen_license_key();
echo $licenseKey;

但是当我尝试 运行 它时,它没有显示任何输出。我是 PHP 的新手,我不太了解调试,但我尝试了一些。我在代码中加入了一些回声,据我所知,我的 $alpha 已在 gen_code_alpha() 函数中成功生成。我还尝试在 gen_license_key() 函数中回显 $licenseKey,但没有帮助。我没有找到更多信息。

那你怎么看?

你快到了,只需更改此:

function gen_license_key()
{
    // return the result instead of assigning it to a local variable
    return gen_code(4) . '-' .
           gen_code(4) . '-' .
           gen_code(4) . '-' .
           gen_code(4) . '-' .
           gen_code(2);
}

然后你可以:

// show the key, do nothing else
echo gen_license_key();

// OR

// store the key in $licenseKey so you can do other stuff with it if needed
$licenseKey = gen_license_key();

// Now show the key
echo $licenseKey;

此外,在您的 gen_code_alpha() 函数中设置 global $alpha = '';,或者我强烈建议遵循 "return" 函数编程模式。

在函数内部定义的变量只存在于这些函数内部。您应该 return 函数中的值,而不是设置全局变量:

function gen_license_key()
{
    return gen_code(4) . '-' .
        gen_code(4) . '-' .
        gen_code(4) . '-' .
        gen_code(4) . '-' .
        gen_code(2);
}

然后您可以通过将变量分配给函数返回的值来获取新值:

$licenseKey = gen_license_key();
echo $licenseKey;

这是完整的代码

请注意您有错字(rand,不是 $rand)

我还建议您更改代码以避免使用全局变量,这是一种不好的做法。

<?php

function gen_code_alpha()
{
    global $alpha;

    $alpha = '';

    for ($i = 0; $i <= 9; $i++) {
        $alpha .= $i;
    }

    // This attaches alphabets from 'a' to 'z' to our $alpha
    for ($i = 65; $i <= 122; $i++) {
        $alpha .= chr($i);
    }
}

function gen_code($len = 1)
{
    gen_code_alpha();
    global $alpha;

    $strlen = strlen($alpha);

    $code = '';
    for ($k = 0; $k < $len; $k++) {
        $i = rand(0, $strlen -1);// now wanna randomly generate the code
        $code .= substr($alpha, $i, 1);
    }

    return $code;
}

function gen_license_key()
{
    $licenseKey = gen_code(4) . '-' .
                gen_code(4) . '-' .
                gen_code(4) . '-' .
                gen_code(4) . '-' .
                gen_code(2);
    return $licenseKey;
}

$licenseKey = gen_license_key();
echo "l:".$licenseKey;

?>

输出:

 l:3X6D-gnQL-I0zJ-TRQD-Sq

如果您真的想沿着这条正确使用全局变量的道路走下去,那么您必须首先引用它们,如果您要为它们赋值,则必须尽早引用它们。此外,由于您似乎没有在这些功能之外使用 $alpha,因此只需 return 这些值并避免 global namespace 污染。

您还有一个拼写错误,其中 $rand 不是变量名,而是函数 rand(),已更正。

<?php
function gen_code_alpha()
{
    $alpha = '';

    for ($i = 0; $i <= 9; $i++) {
        $alpha .= $i;
    }

    // This attaches alphabets from 'a' to 'z' to our $alpha
    for ($i = 65; $i <= 122; $i++) {
        $alpha .= chr($i);
    }
    return $alpha;
}

function gen_code($len = 1)
{
    $alpha = gen_code_alpha();

    $strlen = strlen($alpha);

    $code = '';
    for ($k = 0; $k < $len; $k++) {
        $i = rand(0, $strlen -1);// now wanna randomly generate the code
        $code .= substr($alpha, $i, 1);
    }

    return $code;
}

function gen_license_key()
{
    global $licenseKey;
    $licenseKey = gen_code(4) . '-' .
                  gen_code(4) . '-' .
                  gen_code(4) . '-' .
                  gen_code(4) . '-' .
                  gen_code(2);
}

gen_license_key();
echo $licenseKey;
?>

Try it Online! (Demo)

<?php

function gen_code_alpha()
{
    $alpha = '';

    for ($i = 0; $i <= 9; $i++) {
        $alpha .= $i;
    }

    // This attaches alphabets from 'a' to 'z' to our $alpha
    for ($i = 65; $i <= 122; $i++) {
        $alpha .= chr($i);
    }
}

function gen_code($len = 1)
{
    gen_code_alpha();
    global $alpha;

    $strlen = strlen($alpha);

    $code = '';
    for ($k = 0; $k < $len; $k++) {
        $i = rand(0, $strlen -1);// now wanna randomly generate the code
        $code .= substr($alpha, $i, 1);
    }

    return $code;
}

function gen_license_key()
{
    $licenseKey = gen_code(4) . '-' .
                    gen_code(4) . '-' .
                    gen_code(4) . '-' .
                    gen_code(4) . '-' .
                    gen_code(2);
return $licenseKey;
}

$licenseKey = gen_license_key();
echo $licenseKey;
?>

我们需要 return 函数中的变量,而且 $rand 不是变量 rand() 是函数。