我有一个很大的问题。我有这个数组:
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提前
答案 0 :(得分:0)
在PHP中,数组键是唯一。因此,根据定义,鉴于此实现的特殊性,您的要求无法满足。
相反,如果您认为自己有两个唯一值(566
和1946
),则要为其生成任意数量的随机值(不唯一 )1
和7
之间,可以使用值566
和1946
作为关键字进行反转。
$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)
}
}
你得到的是一个数组数组,其中的键表示你有一组随机数的唯一值集。