2017-12-08 1 views
2

スヨン私は検索配列

"1", "2", "3", "4" 

を含む配列を持っていると私はランダムにこれらの数字の5倍のいずれかを選択するようにarray_randを使用しています。 次に、数字2が2回選ばれ、数字3が2回選ばれたように、複数回選択されたarray_randの結果の数をカウントしたいと思います。

私がやってテストしている。この

$array = array($kort1[$rand_kort1[0]], $kort1[$rand_kort2[0]], $kort1[$rand_kort3[0]], $kort1[$rand_kort4[0]], $kort1[$rand_kort5[0]]); 
$bank = array_count_values($array); 
if (in_array("2", $bank)) { 
    echo "You got one pair"; 
} elseif(in_array("2", $bank) && (???)) { 
    echo "You got two pair"; 
} 
それはそれらのいずれかの番号がランダムに2回選ばれた場合は、「あなたは1ペアを得た」しかし、私の問題は、私はそれが言うようにする方法を知らないで私に教えてくれます

もしそれらの番号のうちの2つが2回選択されれば、 "あなたは2つのペアを持っています"。 $bankの結果は、私は時間のためのソリューションで検索しました

[4] => 1 [3] => 2 [1] => 2 

可能性はまったく運を聖霊降臨祭ません。

+1

'[3] => 2 [1] => 3'は2組と考えられますか? – Erwin

+0

@Erwin [3] => 2 [1] => 2は2組で、コードは最後の数字を無視するべきです –

+0

どのような種類の四つきですか?それも2組と考えられていますか?例えば'[3] => 4 [1] => 1' – Erwin

答えて

1

後でこの1つのライナーのあなたの配列の各要素に

$bank=array(4 => 1, 3 => 2, 1 => 2); // Your array 
function pairs($var) { 
    return($var === 2); // returns value if the input integer equals 2 
} 
$pairs=count(array_filter($bank, "pairs")); // Apply the function to all elements of the array and get the number of times 2 was found 
if ($pairs === 1) 
{ 
echo "you got one pair"; 
} 
if ($pairs === 2) { 
echo "you got two pairs"; 
} 

EDIT

思想を機能をAPPYするarray_filter使用することができます。

$pairs=count(array_diff($bank, array(1,3,4))); 
1

はこれを試してみてください(配列に4つ以上の値がある場合でもこれは機能します)

$count = 0; 
foreach ($bank as $key=>$value) { 
    if ($value === 2) { 
     $count++; 
    } 
} 

if ($count) { 
    $s = $count > 1 ? 's' : ''; 
    echo "You got $count pair$s"; 
} 

You got 1 pairのような出力が表示されます。あなたの質問に言及したような言葉を使いたい場合は、NumberFormatter class