我试图创建一个仅生成许可证密钥的程序。在这里:
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,但没有帮助。我什么都没找到。
那你怎么看?
答案 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;
?>
答案 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
是一个函数。