Bingo kaart multidimensionale array geeft undefined offset in laatste kolom
Het uiteindelijke resultaat dat ik krijg klopt, maar in het proces daarnaartoe gaan er een aantal dingen mis.
In mijn functie generateCard maak ik rijen en kolommen met nummers voor de bingo kaart. Ik denk dat het probleem in deze functie zit.
generateCard:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
function generateCard()
{
$card = array();
for ($row = 1; $row < 8; ++$row)
{
$card[$row] = array();
$deck = array(0,1,2,3,4,5,6,7,8,9);
for ($kolom = 1; $kolom < 8; ++$kolom) {
$index = mt_rand(0,count($deck) - 1);
$number = $deck[$index];
$card[$row][] = $row . $number;
unset($deck[$index]);
$deck = array_values($deck);
}
//Test
printCard($card);
// 7th column
$card[$row][7] = 0;
}
//Test
printCard($card);
// 7th row
for ($kolom = 1; $kolom < 7; ++$kolom){
$card[7][$kolom] = 0;
}
//Test
printCard($card);
return $card;
}
?>
function generateCard()
{
$card = array();
for ($row = 1; $row < 8; ++$row)
{
$card[$row] = array();
$deck = array(0,1,2,3,4,5,6,7,8,9);
for ($kolom = 1; $kolom < 8; ++$kolom) {
$index = mt_rand(0,count($deck) - 1);
$number = $deck[$index];
$card[$row][] = $row . $number;
unset($deck[$index]);
$deck = array_values($deck);
}
//Test
printCard($card);
// 7th column
$card[$row][7] = 0;
}
//Test
printCard($card);
// 7th row
for ($kolom = 1; $kolom < 7; ++$kolom){
$card[7][$kolom] = 0;
}
//Test
printCard($card);
return $card;
}
?>
Ik heb een aantal printCard functies erin geplaatst om de output te testen.
De eerste test net boven het maken van de 7de kolom geeft een berg undefined offset 7 notices. I denk dat dit komt omdat de kolom daar nog niet bestaat, maar wanneer ik deze eerder probeer aan te maken krijg ik nog steeds de notices.
De tweede test boven de 7de rij laat zien dat de 7de rij (die allemaal 0 zouden moeten zijn) gevuld wordt met nummers. Dit wordt daarna overschreven met 0 waardes. Ik dacht dat ik dit kon oplossen door $row < 7 en $kolom < 7 in de for loops te veranderen, maar als ik dat doe worden de kaarten helemaal niet meer geprint.
Ik snap op dit punt niet waarom ik al deze undefined offset notices over de laatste kolom ontvang, ook al maak ik deze eerder aan en waarom ik niet $row < 7 en $kolom < 7 in de for loops van generateCard kan gebruiken om te voorkomen dat de 7de rij wordt gevuld met nummers. Deze 7e rij zou 0 waardes moeten bevatten.
Heeft iemand suggesties hoe ik deze undefined offset op kan lossen en hoe ik kan zorgen dat de 7e rij niet wordt gevuld met nummers, maar met 0 waardes?
Ik ga misschien ergens te kort door de bocht, maar ik kan op dit punt geen oplossing verzinnen.
Het volledig script zal ik hieronder posten:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
mt_srand((double)microtime()*1000000);
function generateCard()
{
$card = array();
for ($row = 1; $row < 8; ++$row)
{
$card[$row] = array();
$deck = array(0,1,2,3,4,5,6,7,8,9);
for ($kolom = 1; $kolom < 8; ++$kolom) {
$index = mt_rand(0,count($deck) - 1);
$number = $deck[$index];
$card[$row][] = $row . $number;
unset($deck[$index]);
$deck = array_values($deck);
}
//Test
printCard($card);
// 7th column
$card[$row][7] = 0;
}
//Test
printCard($card);
// 7th row
for ($kolom = 1; $kolom < 7; ++$kolom){
$card[7][$kolom] = 0;
}
//Test
printCard($card);
return $card;
}
function printCard($card){ ?>
mt_srand((double)microtime()*1000000);
function generateCard()
{
$card = array();
for ($row = 1; $row < 8; ++$row)
{
$card[$row] = array();
$deck = array(0,1,2,3,4,5,6,7,8,9);
for ($kolom = 1; $kolom < 8; ++$kolom) {
$index = mt_rand(0,count($deck) - 1);
$number = $deck[$index];
$card[$row][] = $row . $number;
unset($deck[$index]);
$deck = array_values($deck);
}
//Test
printCard($card);
// 7th column
$card[$row][7] = 0;
}
//Test
printCard($card);
// 7th row
for ($kolom = 1; $kolom < 7; ++$kolom){
$card[7][$kolom] = 0;
}
//Test
printCard($card);
return $card;
}
function printCard($card){ ?>
<table border="1" cellspacing="0" cellpadding="5">
<tr>
<td
Code (php)
</tr>
</table>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php }
$card = generateCard();
$getrokkenGetallen = array();
$deck = range(10,69);
$bingo = false;
while (!$bingo){
$index = mt_rand(0,count($deck) - 1);
$number = $deck[$index];
if(!in_array($number, $getrokkenGetallen)){
unset($deck[$index]);
$deck = array_values($deck);
$getrokkenGetallen[] = $number;
for ($row = 1; $row < 7; $row++) {
for ($kolom = 1; $kolom < 7; $kolom++) {
if ($card[$row][$kolom] == $number) {
$card[$row][7] += 1;
$card[7][$kolom] += 1;
if(($card[$row][7] == 6) || ($card[7][$kolom] == 6)){
$bingo = true;
}
break;
}
}
}
}
}
echo '<h2>Bingokaart waarop BINGO is gevallen</h2>';
printCard($card);
echo '<p><strong>Getrokken getallen:</strong><br>';
foreach($getrokkenGetallen as $value)
{
echo $value . ' ';
}
echo '</p>';
echo '<p><strong>Aantal getallen dat is getrokken:</strong> ';
echo count($getrokkenGetallen);
echo '</p>';
?>
$card = generateCard();
$getrokkenGetallen = array();
$deck = range(10,69);
$bingo = false;
while (!$bingo){
$index = mt_rand(0,count($deck) - 1);
$number = $deck[$index];
if(!in_array($number, $getrokkenGetallen)){
unset($deck[$index]);
$deck = array_values($deck);
$getrokkenGetallen[] = $number;
for ($row = 1; $row < 7; $row++) {
for ($kolom = 1; $kolom < 7; $kolom++) {
if ($card[$row][$kolom] == $number) {
$card[$row][7] += 1;
$card[7][$kolom] += 1;
if(($card[$row][7] == 6) || ($card[7][$kolom] == 6)){
$bingo = true;
}
break;
}
}
}
}
}
echo '<h2>Bingokaart waarop BINGO is gevallen</h2>';
printCard($card);
echo '<p><strong>Getrokken getallen:</strong><br>';
foreach($getrokkenGetallen as $value)
{
echo $value . ' ';
}
echo '</p>';
echo '<p><strong>Aantal getallen dat is getrokken:</strong> ';
echo count($getrokkenGetallen);
echo '</p>';
?>
Bedankt alvast voor hulp en suggesties.
Gewijzigd op 12/03/2015 12:27:36 door Ted Manders
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
mt_srand((double)microtime()*1000000);
function generateCard()
{
$card = newCard();
for ($row = 1; $row < 7; ++$row)
{
$deck = array(0,1,2,3,4,5,6,7,8,9);
for ($kolom = 1; $kolom < 7; ++$kolom)
{
$index = mt_rand(0,count($deck) - 1);
$number = $deck[$index];
$card[$row][$kolom] = $row . $number;
unset($deck[$index]);
$deck = array_values($deck);
}
//Test
printCard($card);
}
//Test
printCard($card);
return $card;
}
function printCard($card)
{
echo '<table border="1" cellspacing="0" cellpadding="5">';
for($rij = 1; $rij < 8; $rij++)
{
echo '<tr> ';
for ($kolom = 1; $kolom < 8; $kolom++)
{
if (($card[$rij][7] == 6) || ($card[7][$kolom] == 6))
{
echo '<td style="background-color:green">';
}
else
{
echo '<td>';
}
echo $card[$rij][$kolom];
echo '</td>';
}
echo '</tr>';
}
echo '</table>';
}
function newCard()
{
return array(1=>newCardRow(),newCardRow(),newCardRow(),newCardRow(),newCardRow(),newCardRow(),newCardRow());
}
function newCardRow()
{
return array(1=>0,0,0,0,0,0,0);
}
$card = generateCard();
$getrokkenGetallen = array();
$deck = range(10,69);
$bingo = false;
while (!$bingo)
{
$index = mt_rand(0,count($deck) - 1);
$number = $deck[$index];
unset($deck[$index]);
$deck = array_values($deck);
$getrokkenGetallen[] = $number;
for ($row = 1; $row < 7; $row++)
{
for ($kolom = 1; $kolom < 7; $kolom++)
{
if ($card[$row][$kolom] == $number)
{
$card[$row][7] += 1;
$card[7][$kolom] += 1;
if(($card[$row][7] == 6) || ($card[7][$kolom] == 6))
{
$bingo = true;
}
break;
}
}
}
}
echo '<h2>Bingokaart waarop BINGO is gevallen</h2>';
printCard($card);
echo '<p><strong>Getrokken getallen:</strong><br>';
foreach($getrokkenGetallen as $value)
{
echo $value . ' ';
}
echo '</p>';
echo '<p><strong>Aantal getallen dat is getrokken:</strong> ';
echo count($getrokkenGetallen);
echo '</p>';
?>
mt_srand((double)microtime()*1000000);
function generateCard()
{
$card = newCard();
for ($row = 1; $row < 7; ++$row)
{
$deck = array(0,1,2,3,4,5,6,7,8,9);
for ($kolom = 1; $kolom < 7; ++$kolom)
{
$index = mt_rand(0,count($deck) - 1);
$number = $deck[$index];
$card[$row][$kolom] = $row . $number;
unset($deck[$index]);
$deck = array_values($deck);
}
//Test
printCard($card);
}
//Test
printCard($card);
return $card;
}
function printCard($card)
{
echo '<table border="1" cellspacing="0" cellpadding="5">';
for($rij = 1; $rij < 8; $rij++)
{
echo '<tr> ';
for ($kolom = 1; $kolom < 8; $kolom++)
{
if (($card[$rij][7] == 6) || ($card[7][$kolom] == 6))
{
echo '<td style="background-color:green">';
}
else
{
echo '<td>';
}
echo $card[$rij][$kolom];
echo '</td>';
}
echo '</tr>';
}
echo '</table>';
}
function newCard()
{
return array(1=>newCardRow(),newCardRow(),newCardRow(),newCardRow(),newCardRow(),newCardRow(),newCardRow());
}
function newCardRow()
{
return array(1=>0,0,0,0,0,0,0);
}
$card = generateCard();
$getrokkenGetallen = array();
$deck = range(10,69);
$bingo = false;
while (!$bingo)
{
$index = mt_rand(0,count($deck) - 1);
$number = $deck[$index];
unset($deck[$index]);
$deck = array_values($deck);
$getrokkenGetallen[] = $number;
for ($row = 1; $row < 7; $row++)
{
for ($kolom = 1; $kolom < 7; $kolom++)
{
if ($card[$row][$kolom] == $number)
{
$card[$row][7] += 1;
$card[7][$kolom] += 1;
if(($card[$row][7] == 6) || ($card[7][$kolom] == 6))
{
$bingo = true;
}
break;
}
}
}
}
echo '<h2>Bingokaart waarop BINGO is gevallen</h2>';
printCard($card);
echo '<p><strong>Getrokken getallen:</strong><br>';
foreach($getrokkenGetallen as $value)
{
echo $value . ' ';
}
echo '</p>';
echo '<p><strong>Aantal getallen dat is getrokken:</strong> ';
echo count($getrokkenGetallen);
echo '</p>';
?>
Gewijzigd op 12/03/2015 15:13:41 door - SanThe -