-1

我想做的是像记忆游戏一样的东西,但我一直无法得到与输出相同的数字

$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 个相同的号码中得到匹配

知道怎么做吗?

谢谢

4

5 回答 5

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()调用foreach绝对没有意义。如果以上不是您想要的,请修改您的问题以使其更清楚。

于 2012-09-26T09:10:08.557 回答
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
于 2012-09-26T19:08:26.860 回答
0

尝试这个。这是一个简单的方法。

$numbers=range(1, 15);

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

$rand_keys = array_rand($numbers, 4);

//使用//随机键打印出随机数。

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

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

希望这会帮助你...

于 2012-09-26T09:17:09.880 回答
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
}

希望能帮助到你 :)

于 2012-09-26T09:05:13.763 回答
-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;
}

你会看到它返回相同的数字。

于 2012-09-26T09:00:05.373 回答