使用指定的键生成数组

时间:2016-06-14 15:19:41

标签: php arrays php-5.3 php-5.5

我有一个很大的问题。我有这个数组:

Array
(
    [2] => 566
    [9] => 1946
)

我需要生成一个数组,对于这个例子,数组的键需要从1到7随机...所以对于这个数组,结果应该是:

Array
(
    [1] => 566
    [5] => 566
    [1] => 1946
    [6] => 1946
    [2] => 1946
    [5] => 1946
    [7] => 1946
    [6] => 1946
    [3] => 1946
    [4] => 1946
    [7] => 1946
)

所以556有2个,所以我把数组放入2次,密钥随机在1..7之间。对于1946年来说,它从一开始就有9个。并且为了这个id,需要在1到7之间放置一个数组9次。请帮帮我。 Thx提前

1 个答案:

答案 0 :(得分:0)

在PHP中,数组键是唯一。因此,根据定义,鉴于此实现的特殊性,您的要求无法满足。

相反,如果您认为自己有两个唯一值(5661946),则要为其生成任意数量的随机值(不唯一17之间,可以使用值5661946作为关键字进行反转。

$uniqueValues = [2 => 566, 9 => 1946];
$newValues    = [];

function getRandomNumbers($n, $i, $j)
{
    $values;
    for($s = 0; $s < $n; $s++) {
        $values[] = mt_rand($i, $j);
    }
    return $values;
}

foreach($uniqueValues as $n => $value) {
    $newValues[$value] = getRandomNumbers($n, 1, 7);
}

var_dump($newValues);

这应该输出类似于以下内容......

array(2) {
  [566]=>
  array(2) {
    [0]=>
    int(6)
    [1]=>
    int(5)
  }
  [1946]=>
  array(9) {
    [0]=>
    int(4)
    [1]=>
    int(2)
    [2]=>
    int(6)
    [3]=>
    int(6)
    [4]=>
    int(5)
    [5]=>
    int(2)
    [6]=>
    int(2)
    [7]=>
    int(2)
    [8]=>
    int(7)
  }
}

你得到的是一个数组数组,其中的键表示你有一组随机数的唯一值集。