在数组中搜索多个值

时间:2017-12-08 03:08:54

标签: php arrays if-statement

所以我有一个包含

的数组
"1", "2", "3", "4"

我使用array_rand随机选择其中一个数字五次。 然后我想计算多次选择array_rand的结果有多少,比如数字2被选中2次而数字3被选中2次。

我已经测试了这个

$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次,但我的问题是我不知道怎么说它"你有两对"如果其中2个被选中2次。 $bank的结果可能是

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

我已经搜索了几个小时没有运气的解决方案。

2 个答案:

答案 0 :(得分:1)

您可以使用array_filter将函数应用于数组的每个元素

$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";
}

修改

后来考虑这个班次:

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

答案 1 :(得分: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