PHP如果为true则重新运行该函数,直到condition为false

时间:2017-03-19 14:08:30

标签: php laravel-5

所以我有一个创建随机字符串的函数,如下所示:

 function createToken($len = 5) {
        $set = '123456789abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';
        $setLen = strlen($set);
        $token = '';
        for ($i = 0; $i < $len; $i++) {
            $token .= $set[rand(0, $setLen - 1)];
        }
        return $token;
    }

现在我需要运行此函数并检查返回令牌是否已存在于数据库中。由于我正在使用Laravel,我可以通过以下方式检查:

$modelName->whereToken($token)->exists()

它将返回true或false,现在如果它返回true我需要重新运行该函数并再次执行生成然后再次执行if并反复执行直到找到返回false的那个 - &gt;存在()。

3 个答案:

答案 0 :(得分:1)

您可以使用do-while循环:

 mean(df[[pollutant]], na.rm = TRUE)

不要忘记在数据库表https://laravel.com/docs/5.4/migrations#indexes

中添加do { $token = createToken(); } while($modelName->whereToken($token)->exists()) //Your token is unique 索引

答案 1 :(得分:1)

 function createToken($len = 5) {
    do {
        $set = '123456789abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';
        $setLen = strlen($set);
        $token = '';
        for ($i = 0; $i < $len; $i++) {
            $token .= $set[rand(0, $setLen - 1)];
        }
    }
    while($modelName->whereToken($token)->exists());
    return $token;
}

答案 2 :(得分:0)

您可以使用do...while循环。语法是这样的:

do {
code to be executed;
} while (condition is true);

所以在你的情况下,代码将是这样的:

do {
  $token = createToken();
} while( $modelName->whereToken($token)->exists() )