PHP:在数字前后分配随机字符?

PHP:在数字前后分配随机字符?,php,random,output,implode,Php,Random,Output,Implode,如何在数字前后分配随机字符?当我运行脚本时,它会给我相同的随机字符 下面是一个示例代码: <?php function randomChar($length = 1) { $str = ""; $characters = array_merge(range('A','Z')); $max = count($characters) - 1; for ($i = 0; $i < $length; $i++) {

如何在数字前后分配随机字符?当我运行脚本时,它会给我相同的随机字符

下面是一个示例代码:

<?php
function randomChar($length = 1) 
{
    $str = ""; 
    $characters = array_merge(range('A','Z'));
    $max = count($characters) - 1;
        for ($i = 0; $i < $length; $i++) 
        {   
            $rand = mt_rand(0, $max);
            $str .= $characters[$rand];
        }  
        return $str; 
}

$test = "0123456789";

echo implode(randomChar(), str_split($test, 1));
?>
我想要的输出必须是:

Output: 0A1V2J3Y4Z5Q6S7O8R9

有人能帮我弄清楚吗?谢谢:)

目前,您只获取一个随机字符并使用它将字符连接在一起-这意味着每次都将使用相同的字符

如果要为每个分隔符生成新字符,则需要将输入字符串传递到函数中,如下所示:

function insert_random_chars($str, $alphabet = "ABCDEFGHIJKLMNOPGRSTUVWXYZ")
{
    // An array to hold the result
    $result = array();

    // The highest character index in the string
    $max = strlen($alphabet) - 1;

    // Loop the characters in the input string
    foreach (str_split($str, 1) as $char) {
        // Add the current character and a random character to the output array
        array_push($result, $char, $alphabet[mt_rand(0, $max)]);
    }

    // Join the output array together
    return implode('', $result);
}

echo insert_random_chars("0123456789");
:

0L1E2G3T4F5S6E7F8I9M


请注意,这段代码并不能完全满足您的需要,但它应该会向正确的方向推动;-)

目前,您仅获取一个随机字符并使用它将字符连接在一起-这意味着每次都将使用相同的字符

如果要为每个分隔符生成新字符,则需要将输入字符串传递到函数中,如下所示:

function insert_random_chars($str, $alphabet = "ABCDEFGHIJKLMNOPGRSTUVWXYZ")
{
    // An array to hold the result
    $result = array();

    // The highest character index in the string
    $max = strlen($alphabet) - 1;

    // Loop the characters in the input string
    foreach (str_split($str, 1) as $char) {
        // Add the current character and a random character to the output array
        array_push($result, $char, $alphabet[mt_rand(0, $max)]);
    }

    // Join the output array together
    return implode('', $result);
}

echo insert_random_chars("0123456789");
:

0L1E2G3T4F5S6E7F8I9M


请注意,这段代码并不能完全满足您的需要,但它应该会向正确的方向推动;-)

目前,您仅获取一个随机字符并使用它将字符连接在一起-这意味着每次都将使用相同的字符

如果要为每个分隔符生成新字符,则需要将输入字符串传递到函数中,如下所示:

function insert_random_chars($str, $alphabet = "ABCDEFGHIJKLMNOPGRSTUVWXYZ")
{
    // An array to hold the result
    $result = array();

    // The highest character index in the string
    $max = strlen($alphabet) - 1;

    // Loop the characters in the input string
    foreach (str_split($str, 1) as $char) {
        // Add the current character and a random character to the output array
        array_push($result, $char, $alphabet[mt_rand(0, $max)]);
    }

    // Join the output array together
    return implode('', $result);
}

echo insert_random_chars("0123456789");
:

0L1E2G3T4F5S6E7F8I9M


请注意,这段代码并不能完全满足您的需要,但它应该会向正确的方向推动;-)

目前,您仅获取一个随机字符并使用它将字符连接在一起-这意味着每次都将使用相同的字符

如果要为每个分隔符生成新字符,则需要将输入字符串传递到函数中,如下所示:

function insert_random_chars($str, $alphabet = "ABCDEFGHIJKLMNOPGRSTUVWXYZ")
{
    // An array to hold the result
    $result = array();

    // The highest character index in the string
    $max = strlen($alphabet) - 1;

    // Loop the characters in the input string
    foreach (str_split($str, 1) as $char) {
        // Add the current character and a random character to the output array
        array_push($result, $char, $alphabet[mt_rand(0, $max)]);
    }

    // Join the output array together
    return implode('', $result);
}

echo insert_random_chars("0123456789");
:

0L1E2G3T4F5S6E7F8I9M


请注意,这段代码并不能完全满足您的需要,但它应该会向正确的方向推动;-)

调用
randomChar()
时,需要指定要生成的随机字符的长度。否则,它将只创建1个随机字符(默认值)

您正在使用的函数实际上将粘贴第二个参数的(数组)值,并将第一个参数作为“胶水”。因此,即使您的
randomChar()
返回的字符超过1个,字符串也会对您要组合的每个数字重复

示例:0ABC2ABC。。。8ABC9

您需要做的是:

  • 创建一个空字符串以保存生成的字符串
  • 生成与测试字符串一样多的
    randomChar()
    (如果只希望字符位于数字之间,则生成-1)
  • 对于每个数字,连接数字和随机字符,并将其放入#1中的字符串中
  • 打印结果
  • 代码:

    函数randomChar($length=1)
    {
    $str=”“;
    $characters=array_merge(范围('A','Z'));
    $max=计数($characters)-1;
    对于($i=0;$i<$length;$i++)
    {
    $rand=mt_rand(0,$max);
    $str.=$characters[$rand];
    }
    返回$str;
    }
    $test=“0123456789”;
    $length=strlen($test);
    $合并='';
    $random_char=randomChar($length);
    对于($i=0;$i<$length;$i++)
    {
    $combined.=$test[$i]。$random_char[$i];
    }
    打印$combled。“\n”;
    

    示例输出:

    调用
    randomChar()
    时,需要指定要生成的随机字符的长度。否则,它将只创建1个随机字符(默认值)

    您正在使用的函数实际上将粘贴第二个参数的(数组)值,并将第一个参数作为“胶水”。因此,即使您的
    randomChar()
    返回的字符超过1个,字符串也会对您要组合的每个数字重复

    示例:0ABC2ABC。。。8ABC9

    您需要做的是:

  • 创建一个空字符串以保存生成的字符串
  • 生成与测试字符串一样多的
    randomChar()
    (如果只希望字符位于数字之间,则生成-1)
  • 对于每个数字,连接数字和随机字符,并将其放入#1中的字符串中
  • 打印结果
  • 代码:

    函数randomChar($length=1)
    {
    $str=”“;
    $characters=array_merge(范围('A','Z'));
    $max=计数($characters)-1;
    对于($i=0;$i<$length;$i++)
    {
    $rand=mt_rand(0,$max);
    $str.=$characters[$rand];
    }
    返回$str;
    }
    $test=“0123456789”;
    $length=strlen($test);
    $合并='';
    $random_char=randomChar($length);
    对于($i=0;$i<$length;$i++)
    {
    $combined.=$test[$i]。$random_char[$i];
    }
    打印$combled。“\n”;
    

    示例输出:

    调用
    randomChar()
    时,需要指定要生成的随机字符的长度。否则,它将只创建1个随机字符(默认值)

    您正在使用的函数实际上将粘贴第二个参数的(数组)值,并将第一个参数作为“胶水”。因此,即使您的
    randomChar()
    返回的字符超过1个,字符串也会对您要组合的每个数字重复

    示例:0ABC2ABC。。。8ABC9

    您需要做的是:

  • 创建一个空字符串以保存生成的字符串
  • 生成与测试字符串一样多的
    randomChar()
    (如果只希望字符位于数字之间,则生成-1)
  • 对于每个数字,连接数字和随机字符,并将其放入#1中的字符串中
  • 打印结果
  • 代码:

    <代码