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

时间:2018-08-06 18:00:50

标签: php debugging output modular-design

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

AND project LIKE 'mine'     -- Finds any values that equal "mine" (AND project = 'mine')
AND project LIKE 'mine%'    -- Finds any values that start with "mine"
AND project LIKE '%mine'    -- Finds any values that end with "mine"
AND project LIKE '%mine%'   -- Finds any values that have "mine" in any position

但是当我尝试运行它时,它没有显示任何输出。我是PHP的新手,我对调试一无所知,但是尝试了一下。我在代码中加入了一些回声,我知道我的$ alpha是在gen_code_alpha()函数中成功生成的。我还尝试在gen_license_key()函数中回显$ licenseKey,但没有帮助。我什么都没找到。

那你怎么看?

5 个答案:

答案 0 :(得分:2)

您快到了,只需更改此即可:

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;

另外,在global $alpha = '';函数中设置gen_code_alpha()或强烈建议您遵循“返回”模式来编程函数。

答案 1 :(得分:0)

在函数内部定义的变量仅存在于那些函数内部。除了设置全局变量,您还应该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;

答案 2 :(得分:0)

这是完整的代码正常工作

请注意您有错字(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

答案 3 :(得分:0)

如果您真的想正确使用全局变量,那么必须首先引用它们,如果要分配给它们,则必须早些引用它们。另外,由于似乎您没有在这些函数之外使用$alpha,所以只需返回这些值并避免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)

答案 4 :(得分:0)

declare @Policies table (VehiclePolicyLimitsID int)
insert into @Policies values (2101891),
                             (2101892),
                             (2101893),
                             (2101894),
                             (2119235),
                             (2119236),
                             (2119237),
                             (2119238),
                             (2190860),
                             (2190861),
                             (2190862),
                             (2190863)
--select * from @Policies


declare @LiabilityPremium  table (Quoteid int, ClassCode int, VehiclePolicyLimitsID int, LiabilityPremium money)
insert into @LiabilityPremium values (728436,3199,2101892,1723),
                                     (728436, 23199,2101893,1855),
                                     (728436,68199,2101894,133),
                                     (741626,3199,2119236,0),
                                     (741626,23199,2119237,0),
                                     (741626,68199,2119238,0),
                                     (774168,3199,2190861,0),
                                     (774168,23199,2190862,0),
                                     (774168,68199,2190863,0)
--select * from @LiabilityPremium

declare @HiredPremium  table (Quoteid int, ClassCode int, VehiclePolicyLimitsID int, LiabilityPremium money)
                    insert into @HiredPremium values ( 728436,  NULL,   2101891,    25),
                                                     (741626,   NULL,   2119235,    0),
                                                     (774168,   NULL,   2190860,    0)

--select * from @HiredPremium
    select 
            COALESCE(l.Quoteid,h.QuoteID,'') as QuoteID,
            COALESCE(l.ClassCode,h.ClassCode,'') as ClassCode,
            COALESCE(l.VehiclePolicyLimitsID,h.VehiclePolicyLimitsID,'') as VehiclePolicyLimitsID,
            l.LiabilityPremium + h.LiabilityPremium as LiabilityPremium
    from @Policies p
    left join @LiabilityPremium l ON l.VehiclePolicyLimitsID = p.VehiclePolicyLimitsID
    left join @HiredPremium h ON h.VehiclePolicyLimitsID = p.VehiclePolicyLimitsID

我们需要在函数中返回一个变量,并且<?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; ?> 不是变量$rand是一个函数。