如何在PHP中洗牌,为每个用户提供不同数量的牌

如何在PHP中洗牌,为每个用户提供不同数量的牌,php,shuffle,Php,Shuffle,下面是我用来给用户13张卡片的代码,每次页面刷新时卡片都会改变。我想给每个用户13张不同于其他用户的卡片,每个房间有4个用户,应该是52张 echo $_SESSION["user"]; echo "<br><br> Your cards :<br>"; function pc_array_shuffle($array) { $i = count($array); while(--$i) { $j = mt_rand(0,

下面是我用来给用户13张卡片的代码,每次页面刷新时卡片都会改变。我想给每个用户13张不同于其他用户的卡片,每个房间有4个用户,应该是52张

echo $_SESSION["user"];
echo "<br><br> Your cards :<br>";

function pc_array_shuffle($array) {
    $i = count($array);

    while(--$i) {
        $j = mt_rand(0, $i);

        if ($i != $j) {
            // swap elements
            $tmp = $array[$j];
            $array[$j] = $array[$i];
            $array[$i] = $tmp;

        }
    }

    return $array;
}


$suits = array('denari', 'kuba', 'sanak', 'shjra');
$cards = array( 2, 3, 'J',4, 5, 6,'Q', 7, 8,'K', 9, 10,'A');

$deck = pc_array_shuffle(range(1,13));

while (($draw = array_pop($deck)) != NULL) {
    print  "<br>" . $cards[$draw / 4] . ' of ' . $suits[$draw % 4] . "<br>\n";
}
echo$\u会话[“用户”];
回显“

您的卡片:
”; 函数pc_数组_shuffle($array){ $i=计数($array); 而(-$i){ $j=百万兰特(0,$i); 如果($i!=$j){ //交换元素 $tmp=$array[$j]; $array[$j]=$array[$i]; $array[$i]=$tmp; } } 返回$array; } $suits=array('denari','kuba','sanak','shjra'); $cards=array(2,3,'J',4,5,6,'Q',7,8,'K',9,10,'A'); $deck=pc_array_shuffle(范围(1,13)); while(($draw=array_pop($deck))!=NULL){ 打印“
”$cards[$draw/4]”。“$suites[$draw%4]”中的“
\n”; }
类似于@kainaw所说的,但带有代码:

$suits = array('denari', 'kuba', 'sanak', 'shjra');
$cards = array( 2, 3, 'J',4, 5, 6,'Q', 7, 8,'K', 9, 10,'A');
$deck = array();

foreach ($suits as $suit) {
 foreach ($cards as $card) {
   $deck[]=$card. " of " . $suit;
 }
}

shuffle($deck);

//deal out the cards from deck

`

你的意思是将同一副牌中的牌发给4个不同的玩家,这些玩家通过不同的计算机/浏览器连接在一起?如果是这样,那对你没有帮助,因为代码会为每个玩家从一个新的牌组中发牌,牌组不是由连接的用户共享的,你需要用一些表建立一个数据库,比如“play_tables”、“players”、“decks”和“cards”,这样牌组就有牌,play_tables就有牌组,最多有4个玩家,而且玩家有牌,所以你用默认的52张牌为一张牌组构建一副牌组并洗牌,然后用户应该连接到该牌组,让他们选择“开始交易”,然后你将共享牌组中的牌分配给play_牌组中连接的玩家。您需要将所有这些信息保存在数据库中,以便所有用户都能访问相同的信息,否则,您将为每个玩家创建和处理一副牌的牌,它们之间没有任何关系。

要使您朝着正确的方向前进一点,请检查标准方法:制作一个包含52张牌的阵列。我叫它美元卡。呼叫洗牌($cards);然后从洗牌牌组中发牌。为什么要建立自己的阵列随机化器?这已经有了,然后整个“A的X卡和B的Y卡”都是不相关的。