所以我有一个包含
的数组"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
我已经搜索了几个小时没有运气的解决方案。
答案 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