0

次の再帰関数があり、一度ループする必要がある場合は何も返されません。戻り条件でユーザー名をエコーすると、ループの後に正しいユーザー名が追加された番号(jdoe_45など)とともに表示されますが、返されません。

function createUsername ($conn, $firstname, $lastname, $numerate = false) {

    $fn = preg_replace("/[^A-Za-z0-9 ]/", '', $firstname);
    $ln = preg_replace("/[^A-Za-z0-9 ]/", '', $lastname);

    $arg = ($numerate) ? '_' . rand(11, 99) : '';

    $username = strtolower(substr($fn, 0, 1) . $ln . $arg);

    $sql = "SELECT * FROM users WHERE username = '$username'";
    $rs  = mysql_query($sql, $conn) or die ("Could not execute query.");
    $num = mysql_numrows($rs);

    if ($num == 0) {

        return $username;
    }

    createUsername($conn, $firstname, $lastname, 1);
}
4

2 に答える 2

0

結果を取得するのを忘れました:

if ($num == 0) {
    $row = mysql_fetch($rs);
    $username = $row['username'];
    return $username;
}
于 2013-01-16T02:06:04.873 に答える
0

再帰呼び出しも返す必要があります。

return createUsername($conn, $firstname, $lastname, 1);

現在、あなたは。のときだけ戻ってき$num == 0ます。

于 2013-01-16T02:08:07.917 に答える