【问题标题】:uses the variable outside for loop statment在 for 循环语句之外使用变量
【发布时间】:2013-06-03 04:11:30
【问题描述】:

我想循环一个变量并在数据库中分配这个变量我使用这个代码

$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";    
$size = strlen( $chars );
for( $i = 0; $i < 10; $i++ ) {
    $str = $chars[ rand( 0, $size - 1 ) ];
}

如果我在 for 循环之外使用 $str,它只会给我 1 个随机字符 如果我在 for 循环中使用它,它会给我随机 10 个字符

如何使用此代码生成随机 10 个字符??

我试图在这样的循环字符串之前定义变量

$str = '';

但也不适合我..

【问题讨论】:

    标签: php string for-loop


    【解决方案1】:

    每次您执行$str = $chars[ rand( 0, $size - 1 ) ]; 时,您都在替换 $str 的价值。要附加或连接所有生成的字符,请使用 . 运算符,例如:

    $str .= $chars[ rand( 0, $size - 1 ) ];
    

    这与执行以下操作相同:

    $str = $str . $chars[ rand( 0, $size - 1 ) ];
    

    文档:http://php.net/manual/en/language.operators.string.php

    【讨论】:

    • 我想迂腐地指出,正如您链接到.= 的手册页中所述,从技术上讲,它与. 是不同的运算符;将其视为同一个运算符可能会导致一些错误的假设。也就是说,PHP 有如此丰富的赋值运算符,大多数时候只是将= 添加到运算符实际上会产生一个有效的运算符。
    【解决方案2】:

    添加“。” (点)到 '=' 用于字符串连接 - 它给你 10 个字符字符串

    $str = '';
    for( $i = 0; $i < 10; $i++ ) {
        $str .= $chars[ rand( 0, $size - 1 ) ];
    }
    
    echo $str;
    

    使用 [] 获取字符数组

    for( $i = 0; $i < 10; $i++ ) {
        $str[] = $chars[ rand( 0, $size - 1 ) ];
    }
    
    print_r($str);
    

    【讨论】:

    • 除非你在循环外声明变量.. 你会被覆盖
    • 大声笑不是我...我无法标记任何答案,直到现在我是新来的
    • @TelmoMarques 也许我在一个方面是错的,但在初始循环 (0) 期间,您将尝试附加到在此之前尚未设置的变量。所以第一个条目将触发通知,设置变量.. 然后其他 9 次 PHP 进入循环,它将能够附加到变量,因为它之前已设置.. 更正,在循环之前设置变量。
    • @user1477332 我从来没有问过问题,但我认为提问者总是可以将任何答案标记为可接受的(但不早于提问后 10-15 分钟)
    • @DarylGill 是的,我同意,初始化变量总是一个好习惯。
    【解决方案3】:

    在 php 中,您使用 .= 将一些内容附加到字符串:

    $str .= $chars[ rand( 0, $size - 1 ) ];
    

    【讨论】:

      猜你喜欢
      • 2018-09-28
      • 2020-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-03
      相关资源
      最近更新 更多