Goedemiddag,
Ik heb een multidimensional array hierin zitten 12 arrays elk met 6 verschillende nummers. Nu wil ik deze array controleren met een variabele die willekeurige nummers genereer. Wanneer 6 nummers in 1 van de 12 arrays overeenkomen wil ik dat de functie stopt en de array opslaan zodat weer gegeven kan worden op het scherm.
Nu had ik al het een en ander gevonden op internet. Maar ik kom nu dus in een infinite loop terecht.
Iemand een idee hoe ik dit zou kunnen oplossen en wat ik fout heb gedaan?
<?php
mt_srand((double)microtime() * 1000000);
//lege bingokaart maken
$bingokaart = [];
//functie bingokaart vullen
function kaart_maken(){
//rijen vullen met willekeurige nummers
for($rij=1; $rij<=6; $rij++){
$bingokaart[$rij] = []; //de rij initialiseren
for($num=1; $num<=6; $num++){
//nummer aanmaken, en meteen controleren of ie al in de rij zit
while(in_array($nummer = $rij . rand(0,9), $bingokaart[$rij]));
//voeg nummer toe aan array
$bingokaart[$rij][$num] = $nummer;
}
}
//bingokaart-array uitbreiden met horizontale en verticale rijen door de horrizontale rijen te
//kantelen
$new_bingokaart = array();
foreach($bingokaart as $key => $subarr) {
foreach ($subarr as $subkey => $subvalue) {
$new_bingokaart[$subkey][$key] = $subvalue;
}
}
//bingokaart nummers en tabel printen
echo "<table border='1px black solid'>";
for($i=1; $i<=6; $i++){
echo "<tr>";
for($x=1; $x<=6; $x++){
echo "<td>" . $bingokaart[$i][$x] . "</td>";
}
echo "</tr>";
}
echo "</table><br>";
return array_merge($bingokaart, $new_bingokaart);;
}
//bingokaart printen
$bingokaart = kaart_maken();
$bingo = false;
$getal = rand(10, 69);
$getrokken_getallen = array();
while(!$bingo){
while(in_array($getal, $getrokken_getallen));
$getrokken_getallen[] = $getal;
for($rij=1; $rij<=12; $rij++){
for($rij_nr=1; $rij_nr<=6; $rij_nr++){
if($bingokaart[$rij][$rij_nr] == $getal){
$bingokaart[$rij][0] += 1;
if($bingokaart[$rij][6] == 6){
print "Bingo";
$bingo = true;
}
}
}
}
}
?>
Alvast bedankt voor de hulp.
Groeten Mario
2.952 views