Php随机字符串Ascii

时间:2014-05-04 16:57:28

标签: php

我是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变量并硬编码循环中的数字,他就会进入。但是,我从中得不到任何东西。

1 个答案:

答案 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);