2016-06-14 12 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だから、私は1..7の間でキーをランダムに2回配列に入れます。 1946年には同じ、これは開始から9を持っています。そして、このidのために、1.7の間のキーで配列を9回入れてください。お願い助けて。事前にThx

+0

私はいくつかの等価キーで配列を作ることができません – splash58

+0

その結果は不可能です。複数の同じキーを持つ配列を持つことはできません。 –

+0

それはその配列のキーでなければなりませんか?結果としてオブジェクトの配列になる可能性がありますか? '[0] => {x:7、number:566}、[1] => {x:7、number:1946} – Jeff

答えて

0

PHP配列キーではユニークです。したがって、この実装の具体性を考えれば、あなたの要件を満たすことはできません。あなたは2つのユニークな値(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) 
    } 
} 

あなたの代わりに、ここで何を得る、キーはあなたが持っているに一意の値のセットを表す配列の配列、である必要があります乱数の配列

関連する問題