刚看到这题目时我心理活动是,这太特么简单了好吗 这题拿来考人?
结果后面做的乱七八糟的,有些问题也没考虑到。回家之后重新想了下,总算输出正常了。
用最土的办法,过程如下: 先把牌拼出来,随机生成5张,再让正序排列,
使用字符串函数检查是否存在于2345678910JQKA,然后输出。
<?php
/*拼出52张牌*/
$pk = [
"红"=>[2,3,4,5,6,7,8,9,10,'J','Q','K','A'],
"黑"=>[2,3,4,5,6,7,8,9,10,'J','Q','K','A'],
"方"=>[2,3,4,5,6,7,8,9,10,'J','Q','K','A'],
"梅"=>[2,3,4,5,6,7,8,9,10,'J','Q','K','A'],
];
foreach ($pk as $key => $value) {
foreach ($value as $k => $v) {
$array[]= $key.'-'.$v;
}
}
/*抽出五张*/
for($i=0;$i<5;$i++){
$rand_number2[] = $array[array_rand($array)];
}
// $rand_number2=["黑-K","红-J","梅-9","红-10","方-Q"]; //顺子测试案例
foreach ($rand_number2 as $key => $value) {
$string = explode('-', $value);
$str_color[] =$string[0];
$str_num[] = $string[1];
$color_num .= $string[0].' '.$string[1].' , ';
}
/*判断扑克数量*/
if(count($str_num)!=5){
echo '发牌数量错误';
die;
}
/*检查是否顺子*/
sort($str_num);
$arr_to_str2 = intval(implode('', $str_num));
$sort_pk = ["J"=>"","Q"=>"","K"=>"","A"=>""];
foreach ($str_num as $value) {
if($value=='J' || $value=='Q' || $value=='K' || $value=='A' ){
$sort_pk[$value]=$value;
}
}
foreach ($sort_pk as $value) {
$arr_to_str2 .= $value;
}
print_r($arr_to_str2);
$pk = '2345678910JQKA';
$pos = strpos($pk,$arr_to_str2);
print_r($color_num);
echo "<br>";
if($pos===false && $arr_to_str2!='2345A'){
echo "不是顺子";
}else{
echo '是顺子';
}
输出结果:
红 6 , 红 Q , 梅 1 , 梅 J , 黑 5 ,
不是顺子