3个数字和字母之间的概率间距

时间:2014-08-31 07:52:34

标签: php

我想在数字和字母之间建立概率间距,如上例所示:

请注意,我有两个字符串,每个字符串有3个字母:

$string1 = "123";
$string2 = "456";

//Result must be:

Line1:  1 2 3
Line2: 4 5 6

--------
$string1 = "456";
$string2 = "891";

//Result must be:

Line1: 46 5
Line2:   8 91

.....

如何使用PHP以编程方式执行此操作并返回此结果(使用rand函数)?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

随机化第一行,将第一行的值的位置作为种子,并将其作为空格用于第二个字符串。示例:(我只使用了子弹而不是空格)

// handle first line
$string1 = "123";
// create an array with the characters with spaces
$string1 = array_merge(str_split($string1), array_fill(0, 3, '•'));
shuffle($string1); // shuffle them first
// determine and sace the keys of the non empty characters
$empty_keys = array_keys($string1, '•'); 
$values = array_diff(array_keys($string1), $empty_keys);

$line1 = implode('', $string1);

// second line
$string2 = "456";
$temp = str_split($string2); // create a temporary holder
for($i = 0; $i < 6; $i++) {
    if(isset($values[$i])) {
        $line2[$i] = '&bull;';
    } else {
        $line2[$i] = array_pop($temp);
    }
}

$line2 = implode('', $line2);

echo $line1 . '<br/>' . $line2;