用PHP中预定义的一组数字填充数组


Populating an array with a predefined set of numbers in PHP

我需要创建两个数组,用于模拟乐透彩票的抽奖。

第一个数组将由1到49之间的6个唯一数字组成。第二个数组将由介于1和49之间的7个唯一数字组成。

我是PHP的新手,我不知道如何填充数组,给它一个预定义的大小,在数组中随机放入1到49之间的六个数字,然后最终按升序对数组进行排序。

这是我的快速粗略草稿,我认为什么在某种程度上朝着正确的方向发展?

$tmp; 
$lotto = array(rand(1,49)); //Creating the random number for $lotto
$lottoMax = array(rand(1,49)); //Creating the random number for $lottoMax
for($tmp=0; $lotto <= 6; $tmp++){
    //creating the size of the array?
}

如有任何建议/提示/帮助,我们将不胜感激!非常感谢。

有几种方法可以处理这样的问题。首先想到的是使用range(1, 49)创建一个数字1-49的数组。然后用shuffle()打乱数组,使其顺序随机化。最后,由于它已经是随机化的,您可以去掉前6或7个数字来填充您的两个数组(我将使用array_slice())。内容保证不会有任何重复,并且只需要几次操作。

// The bag of numbers is a range
$bag = range(1, 49);
// Shuffle it
shuffle($bag);
// Get the first array
$first_group = array_slice($bag, 0, 6);
// Shuffle it again and get the second array
shuffle($bag);
$second_group = array_slice($bag, 0, 7);
print_r($first_group);
Array
(
    [0] => 36
    [1] => 22
    [2] => 34
    [3] => 17
    [4] => 23
    [5] => 25
)
print_r($second_group);
Array
(
    [0] => 40
    [1] => 32
    [2] => 33
    [3] => 36
    [4] => 29
    [5] => 7
    [6] => 3
)

您只需通过range()函数生成从1到49的初始数字,然后洗牌,然后切片:

$first = range(1, 49); shuffle($first);
$second = range(1, 49); shuffle($second);
$lotto = array_slice($first, 0, 6);
$lottoMax = array_slice($second, 0, 7);

array_rand()函数从数组中返回一个随机选择。

$all_numbers = range(1, 49); // Create an array of 1 .. 49
$pick6 = array_rand($all_numbers, 6);
sort($pick6);
$pick7 = array_rand($all_numbers, 7);
sort($pick7);

您似乎有一个不错的开发背景,这可能会让PHP数组一开始有点混乱。这有助于我把它们想象成散列。

你可以用几种方法创建一个数组,我通常喜欢声明它:

$new_array = array();

或者,填充和初始化:

$new_array = array(1,2,3,"String")

PHP数组通常(总是?)动态调整大小和类型。。。你可以随心所欲地把它们弄混。

您还可以通过分配快速将项目添加到数组中:

$new_array[] = "whatever"; //will add it to the end of the array
$new_array['index'] = "more whatever"; // will insert it with the index 'index'
$new_array[11] = "last whatever"; // will put it in at numeric index 11

后两者将覆盖该索引中的任何值,这可能是显而易见的。

不管怎样,希望这会有所帮助,而且从其他答案来看还不太明显。

这是我本来打算提出的建议,但每个人都抢先一步:

$possible_values = range(1,49);
$array_of_six = array_rand($possible_values,6);
$array_of_seven = array_rand($possible_values,7);

默认情况下,它会按顺序返回。