Autor Zpráva
S3RIO2
Profil
Zdravím,

lámu si teď hlavu s vyřešením jedné věci. A rád bych požádal o radu jak toto efektivně vyřešit.

Mám dvě proměnné $b a $c, proměnná $b se mi vypíše 20x a proměnná $c pouze 5x. Dále mám html tabulku 5x5 (5 sloupců - 5 řádků - celkem 25 buněk). Nyní bych potřeboval, dostat proměnné do buněk té tabulky. Což by nebyl takový problém, ale potřebuji aby jejich pozice nebyla vždy stejná a byla náhodně generována.

Jednoduše řečeno proměnná $b bude při prvním refreshi stránky na pozicích např. 1A, 2B, 3A, 4B atd. (až do počtu 20) a proměnná $c bude na pozicich 1B, 2A, 3B, 4A atd. (až do počtu 5). A při dalším refreshi to bude například opačně.

Nenapadá mě žádné řešení (nejsem profík, spíše se v tom plácám) a tak má otázka na zkušenější zní .., jak bych toto náhodné generování do buněk mohl řešit.

Kdybych to moc složitě vysvětloval, tak si to představte jako hru hledání min ve windows. Kdy proměnná $c představuje minu.

Rád bych to řešil na straně serveru, nikoliv klienta.., proto javascript zřejmě nepřichází úplně v úvahu.

Předem děkuji, pokud se nad tímto threadem někdo pozastaví. :-)
Dan Charousek
Profil
Já bych na to šel asi nějak takto:

<?php

function getRandomNumbers($from, $to, $count)
{

    $result = [];

    for($i = 0; $i < $count; $i++)
    {
        do
        {
            $rand = rand($from, $to);
        } while(in_array($rand, $result));
        $result[] = $rand;
    }

    return $result;

}

?>
<!DOCTYPE html>
<html>

    <head>
        <meta charste="utf-8">
    </head>

    <body>
        
        <table>

            <?php 

                $fieldPositions = getRandomNumbers(0, 24, 20);
                $cellsUsed = 0;

                for($i = 0; $i < 5; $i++)
                {
                    echo '<tr>';
                    for($j = 0; $j < 5; $j++)
                    {
                        echo '<td>' . (in_array($cellsUsed, $fieldPositions) ? 'POLE' : 'MINA') . '</td>';
                        $cellsUsed++;
                    }
                    echo '</tr>';
                }

            ?>

        </table>    

    </body>


</html>
Martin2
Profil *
S3RIO2:
Máš definovaných 25 položek v poli. Jejich pozice stačí jen zamíchat.

$tabulka = array_fill(0,20,$b)+array_fill(20,5,$c);
shuffle($tabulka);

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: