2016-06-14 5 views
-3

У меня есть большой вопрос. У меня есть этот массив:Генерировать массив с указанными ключами

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 раза с помощью клавиши random между 1..7. В 1946 году то же самое, у этого есть 9 с самого начала. И для этого id neet вставлять массив 9 раз с ключом между 1..7. Помоги мне, пожалуйста. Thx заранее

+0

Я не могу создать массив с некоторыми равными ключами – splash58

+0

Этот результат невозможен. Вы не можете иметь массив с несколькими одинаковыми ключами. –

+0

Должен ли он быть ключом в этом массиве? Может быть, результатом может быть массив объектов? например '[0] => {x: 7, number: 566}, [1] => {x: 7, number: 1946}' – Jeff

ответ

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) 
    } 
} 

Что ты здесь вместо этого, это массив массивов, где ключи представляют собой уникальный набор значений, к которым у вас есть массив случайных чисел.

Смежные вопросы