私は、ユーザーが私/私の店からスクラッチカードを購入し、数字をスクラッチして3枚の写真を一致させることでそのカードを引き換えて賞品を獲得できるスクラッチカードゲームに取り組んでいます
物理的なスクラッチ カードのように、いつ賞品を獲得できるかを知るために、賞品を事前に設定したいのですが、明らかにユーザーはそうではありません。これは、賞品を制限できるようにするためです。誰が賞品を獲得するかの条件..
賞品を設定する方法はわかっていますが、配列内の各データ値をチェックして、実際に勝った場合を除き、3 つの一致する数字がないことを確認する必要があります..
これまでのところ、これがあります(すぐに整理してコードを短くします)
$numbers = array(
0 => rand(0,9),
1 => rand(0,9),
2 => rand(0,9),
3 => rand(0,9),
4 => rand(0,9),
5 => rand(0,9),
6 => rand(0,9),
7 => rand(0,9),
8 => rand(0,9)
);
これはランダムに9つの数字を生成し、
echo "<table>";
$i=0;
for($x=0;$x<3;$x++){
echo "<tr>";
for($y=0;$y<3;$y++){
echo "<td>" . $numbers[$i] . "</td>";
$i++;
}
echo "</tr>";
}
それらを 3x3 テーブルに並べ替えます
特定の値を探して配列をソートするコマンド in_array() があることは知っていますが、各値をチェックして一致するかどうかを確認する無限ループを実行したくありません。
誰かが持っている可能性のある提案を探しているので、配列を並べ替えて、3つの数字が存在するかどうかを確認できます.3つの数字が存在する場合、それらはサポートされていません(つまり、ユーザーは実際に賞品を獲得していません)。新しい番号に変更する必要があります。
だから、あなたの助けを前もってありがとう、私はあなたの提案を楽しみにしています
ルーク
** * *編集* *
+詳細情報
勝者を選ぶために、このようなデータベース クエリを使用します
$stock = $conn -> query("SELECT DISTINCT * FROM codes WHERE Available = 1 AND 0 = FLOOR(RAND()*Chance) ORDER BY RAND()");
各コードには勝つチャンスが設定されており、一致する場合は表示され、獲得したコードに応じて特定の賞品が表示されます
$stock = $conn -> query("SELECT DISTINCT * FROM codes WHERE Available = 1 AND Win = 1);
「Win」はデータベース内のテーブルで、誰かがゲームをプレイするたびに 1 ずつ下がります
したがって、各コードにはテーブル Win があり、1 になると次のゲームで飛び出します。
これらは私が考えることができる2つの方法であり、うまくいくと思います。どちらの方法でも大まかにいつ誰かが勝つかを制御できますが、2番目の解決策は明らかにそれを行うより正確な方法です