【问题标题】:PHP- How to do str_shuffle make different value?PHP-如何做 str_shuffle 产生不同的价值?
【发布时间】:2020-07-02 14:07:55
【问题描述】:

PHP- str_shuffle 如何产生不同的值??

    $randomcode="QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
$randomcode='NT'.substr(str_shuffle($str),5,8);
    echo $randomcode.'<br>';
    echo $randomcode.'<br>';

结果:

NT2ZCI1qdX
NT2ZCI1qdX

如何制作不同的值?? 我想将它插入到我的数据库中。

$randomcode="QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
$randomcode=substr(str_shuffle($str),5,8);

$stmt = $pdo->prepare("insert into AGEGroup (AGE,hidecode) values (:age,$randomcode)");

foreach ($_POST['age'] as $age) {
    $stmt->execute([':age'=>$age]);
}

非常感谢

【问题讨论】:

  • 每次你想创建一个新值时,你都必须做str_shuffle()。在您的代码中,您只需执行一次,然后将该值分配给一个变量。除非你改变它,否则该变量不会改变。
  • 我很好奇你为什么要使用它。它到底是为了什么?也许有更好的方法来做到这一点。
  • 您好,谢谢您的回复,我确定它会自动将随机码插入数据库
  • @superMay_2 此方法不会创建唯一字符串,您可以并且将获取重复值。

标签: php random


【解决方案1】:

您应该在循环内生成代码。

//list of possible characters in generated code
$charmap = "QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";

//note using `:randomcode` instead of the direct variable
$stmt = $pdo->prepare("insert into AGEGroup (AGE) values (:age, :randomcode)");

foreach ($_POST['age'] as $age) {
    
    //create a "random" string that is 8 characters.
    //string will never repeat any characters, and can create duplicates
    $code = 'NT' . substr(str_shuffle($charmap), -8);

    //send variables to query on each loop
    $stmt->execute([':age' => $age, ':randomcode' => $code]);
}

正如我在代码中的 cmets 中所说,这种方法可能有创建重复代码的趋势。它也不会包含任何重复的字母/数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    相关资源
    最近更新 更多