我是PHP的新手,并且不知道,为什么这样做不起作用:
$lenght=32;
$startAscii=48;
$endAscii=122;
echo getString();
function getString() {
$text="";
for($count = 1; $count < $lenght; $count++) {
$text=$text.chr(mt_rand($startAscii, $endAscii));
}
return $text;
}
他永远不会进入循环。首先,如果我删除$lenghth
变量并硬编码循环中的数字,他就会进入。但是,我从中得不到任何东西。
答案 0 :(得分:2)
这是因为该功能仅使用局部变量。你需要这样做:
function getString() {
$text="";
$length=32;
$startAscii=48;
$endAscii=122;
for($count = 1; $count < $length; $count++) {
$text=$text.chr(mt_rand($startAscii, $endAscii));
}
return $text;
}
或者你可以这样做,但这是更“丑陋”的解决方案:
function getString() {
global $length, $startAscii, $endAscii;
$text="";
for($count = 1; $count < $length; $count++) {
$text=$text.chr(mt_rand($startAscii, $endAscii));
}
return $text;
}
或者你可以把它作为参数,我认为这是最好的解决方案,因为这个功能更有效(你可以使用不同值的这个函数,而不需要在里面编辑代码):
function getString($length, $startAscii, $endAscii;) { ... }
$length=32;
$startAscii=48;
$endAscii=122;
echo getString($lenght, $startAscii, $endAscii);