如何在PHP中获得rand相同的数组

时间:2012-09-26 08:55:23

标签: php arrays

我想做的事情就像记忆游戏一样,但我保持不能得到与输出相同的数字

$numbers = range(1, 15);
shuffle($numbers);
foreach($numbers as $key){
echo $numbers[array_rand($numbers)];
break;  
}

现在输出将是这样的

4 2 3 3

1 5 3 6

2 3 4 5

10 9 8 10

但我怎么做rand数组和相同的2数组编号,这是我可以匹配的数字。

我想要的是

2 3 1 4

3 4 2 1

5 6 9 7

7 9 6 5

所以这样我可以得到2个相同数字的比赛

任何想法怎么做?

感谢

5 个答案:

答案 0 :(得分:0)

首先,你必须做一个带有几个值的数组

// Generate array with values from 1 to 8
$arNumbers = range(1, 8); 
// Duplicate the array so get copy of each number
$arNumbers = array_merge($arNumbers, $arNumbers);

// Shuffle the array
shuffle($arNumbers);

// And now display them
foreach($arNumbers as $nNumber)
{
     // Do some business
}

希望有所帮助:)

答案 1 :(得分:0)

你的问题有点令人困惑和模糊。我推断你想要随机播放并以随机顺序显示一组数字,每个数字两个。要做到这一点:

<?php
$numbers = range(1, 5);
$numbers = array_merge($numbers, $numbers);
shuffle($numbers);
echo implode(' ', $numbers);

例如,这会输出3 5 1 5 1 2 3 4 2 4

代码中array_rand()的{​​{1}}调用完全没有意义。如果以上不是您想要的,请修改您的问题以使其更清晰。

答案 2 :(得分:0)

试试这个。这是一种简单的方式。

$numbers=range(1, 15);

//从$ numbers数组中获取4个唯一的随机密钥。

$rand_keys = array_rand($numbers, 4);

//使用打印出随机数 //随机密钥。

foreach ($rand_keys as $k=>$i) {

    echo $numbers[$i]."  ";
}

希望这会对你有帮助......

答案 3 :(得分:0)

如果我告诉你,你可以通过以下方式实现你想要的目标:

// make sure these are even numbers
$rows = 4;
$cols = 4;

$set = range(1, ($rows * $cols) / 2);
$numbers = array_merge($set, $set);
shuffle($numbers);
foreach (array_chunk($numbers, $cols) as $row) {
    foreach ($row as $col) {
        printf('%-5d', $col);
    }
    echo "\n";
}

输出:

3    7    2    1    
4    6    8    5    
6    3    8    4    
2    5    7    1

答案 4 :(得分:-1)

做类似的事情:

$numbers = range(1, 15);
shuffle($numbers);
$used_numbers = array();
foreach($numbers as $key){
  $this_number = $numbers[array_rand($numbers)];
  $used_numbers[] = $this_number;
  echo $this_number;
  break;  
}
$_SESSION['numbers'] = $used_numbers;

然后你可以使用$ _SESSION来访问另一个页面上的数字(可能在重新加载之后),或者使用相同的$ used_numbers数组来访问它们。

如果您尝试:

$numbers = range(1, 15);
shuffle($numbers);
$used_numbers = array();
foreach($numbers as $key){
  $this_number = $numbers[array_rand($numbers)];
  $used_numbers[] = $this_number;
  echo $this_number;
  break;  
}
echo '<br />';
foreach($used_numbers AS $number) {
  echo $number;
}

您将看到它返回相同的数字。