Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将7个随机元素从一个数组移动到另一个数组_Php_Arrays_Random_Php 5.3 - Fatal编程技术网

Php 将7个随机元素从一个数组移动到另一个数组

Php 将7个随机元素从一个数组移动到另一个数组,php,arrays,random,php-5.3,Php,Arrays,Random,Php 5.3,在一个有2名玩家的文字游戏中,我想在PHP 5.3函数中为每个玩家随机分配7个字母,创建一个新游戏: $LETTERS = array( '*', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ); $NUMBERS = array( 2, 10, 3, 5, 3,

在一个有2名玩家的文字游戏中,我想在PHP 5.3函数中为每个玩家随机分配7个字母,创建一个新游戏:

$LETTERS = array( '*', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' );
$NUMBERS = array(  2,  10,   3,   5,   3,   5,   9,   2,   2,   8,   4,   6,   4,   5,   8,  10,   6,   6,   6,   5,   3,    1,   2,   1,   2,   1,   1 );

function createGame($dbh, $uid) {
        global $LETTERS, $NUMBERS;
        $letters  = array();
        $letters1 = array();
        $letters2 = array();

        for ($i = 0; $i < count($LETTERS); $i++) {
                $letter = $LETTERS[$i];
                $number = $NUMBERS[$i];

                for ($n = 0; $n < $number; $n++) {
                        array_push($letters, $letter);
                }
        }

        for ($i = 0; $i < 7; $i++) {
                /* TODO move random letter from $letters to $letter1 */
                /* TODO move random letter from $letters to $letter2 */
        }

        $sth = $dbh->prepare('insert into games (player1, stamp1, stamp2, letters1, letters2, letters, board) values (?, unix_timestamp(now()), 0, ?, ?, ?, space(225))');
        $sth->execute(array($uid, join('', $letters1), join('', $letters2), join('', $letters)));
        return $dbh->lastInsertId();
}
您可以使用:


我将洗牌字母数组并移除shuffeld数组的第一个元素,以获得一个随机字母

shuffle($letters); // Mix alle array elements
for ($i = 0; $i < 7; $i++) {
  $letters1[] = array_shift($letters); // get first array element, removing it from $letters
  $letters2[] = array_shift($letters); // get first array element, removing it from $letters
}
shuffle($letters);//混合所有数组元素
对于($i=0;$i<7;$i++){
$letters1[]=array_shift($letters);//获取第一个数组元素,将其从$letters中删除
$letters2[]=array_shift($letters);//获取第一个数组元素,将其从$letters中删除
}

你可以
洗牌()$letters1=数组_切片($letters,0,7)-但不会从
$letters
数组的开头删除前7个字母。您知道为什么吗?如果要删除它们,请查看:
array\u splice()
$letters = array_diff($letters, $letter1);
$letters = array_diff($letters, $letter2);
shuffle($letters); // Mix alle array elements
for ($i = 0; $i < 7; $i++) {
  $letters1[] = array_shift($letters); // get first array element, removing it from $letters
  $letters2[] = array_shift($letters); // get first array element, removing it from $letters
}