-1

やりたいのは暗記ゲームのようなものですが、出力で同じ数が得られません

$numbers = range(1, 15);
shuffle($numbers);
foreach($numbers as $key){
echo $numbers[array_rand($numbers)];
break;  
}

出力は次のようになります

4 2 3 3

1 5 3 6

2 3 4 5

10 9 8 10

しかし、どのようにRand配列として、同じ2つの配列番号でそれを行うか、つまり、番号を一致させることができます.

私が出力したいのは

2 3 1 4

3 4 2 1

5 6 9 7

7 9 6 5

このように、2つの同じ番号で一致を得ることができます

それを行う方法はありますか?

ありがとう

4

5 に答える 5

0

あなたの質問は少し混乱して曖昧です。ランダムな順序で、それぞれ2つずつ、数字の配列をシャッフルして表示したいと推測します。それを行うには:

<?php
$numbers = range(1, 5);
$numbers = array_merge($numbers, $numbers);
shuffle($numbers);
echo implode(' ', $numbers);

これは、たとえば、を出力します3 5 1 5 1 2 3 4 2 4

コード内ののarray_rand()呼び出しはforeachまったく意味がありません。上記が希望どおりでない場合は、質問を修正して明確にしてください。

于 2012-09-26T09:10:08.557 に答える
0

まず、いくつかの値を持つ配列を作成する必要があります

// Generate array with values from 1 to 8
$arNumbers = range(1, 8); 
// Duplicate the array so get copy of each number
$arNumbers = array_merge($arNumbers, $arNumbers);

// Shuffle the array
shuffle($arNumbers);

// And now display them
foreach($arNumbers as $nNumber)
{
     // Do some business
}

それが役に立てば幸い :)

于 2012-09-26T09:05:13.763 に答える
0

これを試して。それは簡単な方法です。

$numbers=range(1, 15);

// $numbers 配列から 4 つの一意のランダム キーを取得します。

$rand_keys = array_rand($numbers, 4);

//乱数キーを使用して乱数を出力します。

foreach ($rand_keys as $k=>$i) {

    echo $numbers[$i]."  ";
}

これがあなたに役立つことを願っています...

于 2012-09-26T09:17:09.880 に答える
0

私があなたを正しく理解できれば、次のことでやりたいことを達成できます。

// make sure these are even numbers
$rows = 4;
$cols = 4;

$set = range(1, ($rows * $cols) / 2);
$numbers = array_merge($set, $set);
shuffle($numbers);
foreach (array_chunk($numbers, $cols) as $row) {
    foreach ($row as $col) {
        printf('%-5d', $col);
    }
    echo "\n";
}

出力:

3    7    2    1    
4    6    8    5    
6    3    8    4    
2    5    7    1
于 2012-09-26T19:08:26.860 に答える
-1

次のようなことをします:

$numbers = range(1, 15);
shuffle($numbers);
$used_numbers = array();
foreach($numbers as $key){
  $this_number = $numbers[array_rand($numbers)];
  $used_numbers[] = $this_number;
  echo $this_number;
  break;  
}
$_SESSION['numbers'] = $used_numbers;

次に、$ _ SESSIONを使用して別のページの番号にアクセスするか(おそらくリロード後)、同じ$used_numbers配列を使用してそれらにアクセスできます。

試してみると:

$numbers = range(1, 15);
shuffle($numbers);
$used_numbers = array();
foreach($numbers as $key){
  $this_number = $numbers[array_rand($numbers)];
  $used_numbers[] = $this_number;
  echo $this_number;
  break;  
}
echo '<br />';
foreach($used_numbers AS $number) {
  echo $number;
}

同じ番号が返されることがわかります。

于 2012-09-26T09:00:05.373 に答える