Yazhe tutorial
Ik ben bezig PHP te leren uit een boek.
Hoewel ik tevreden ben over de uitleg in het boek merk ik dat er hier en daar toch wat foutjes in de code zitten.
Bij de onderstaande code krijg ik deze foutmelding:
Notice: Undefined offset: 6 in C:\xampp\htdocs\basiscursus\hoofdstuk7\index.php on line 18
1 $cijfers = array('één', 'twee', 'drie', 'vier', 'vijf', 'zes' );
2 $maxworpen = 3;
3 $worpen = 0;
4 $bonus = 0;
5
6 while ( $worpen < ($maxworpen + $bonus) ):
7 $ogen = mt_rand( 1, 6 );
8 if( $ogen == 1 || $ogen == 6 ):
9 $bonus ++;
10 endif;
11 $totaal += $ogen;
12 $worpen ++;
13 if ( $worpen <= $maxworpen ):
14 echo 'Worp ';
15 else:
16 echo 'Bonus';
17 endif;
18 echo 'Worp '.$worpen.': '.$cijfers[$ogen].'<br>';
19 endwhile;
20
21 echo 'Totaalscore: '.$totaal;
Ik kom er niet achter waarom deze foutmelding in de browser wordt weergegeven.
Verder wordt in de browser 'WorpBonus' weergegeven ipv Bonus
Heeft iemand een idee waar dit aan ligt?
Worp Worp 1: vijf
Worp Worp 2: vijf
Worp Worp 3:
BonusWorp 4: vijf
Totaalscore: 18
== Edit ==
Heb je script even aangepast zodat de telling van de array klopt.
Een array begint met 0 niet met 1 dus daarom de problemen gok ik.
hier de code :
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$cijfers = array('één', 'twee', 'drie', 'vier', 'vijf', 'zes' );
$maxworpen = 3;
$worpen = 0;
$bonus = 0;
while ( $worpen < ($maxworpen + $bonus) ):
$ogen = mt_rand( 0, 5 );
if( $ogen == 0 || $ogen == 5 ):
$bonus ++;
endif;
$totaal += $ogen;
$worpen ++;
if ( $worpen <= $maxworpen ):
echo 'Worp ';
else:
echo 'Bonus';
endif;
echo 'Worp '.$worpen.': '.$cijfers[$ogen].'<br>';
endwhile;
echo 'Totaalscore: '.$totaal;
?>
$cijfers = array('één', 'twee', 'drie', 'vier', 'vijf', 'zes' );
$maxworpen = 3;
$worpen = 0;
$bonus = 0;
while ( $worpen < ($maxworpen + $bonus) ):
$ogen = mt_rand( 0, 5 );
if( $ogen == 0 || $ogen == 5 ):
$bonus ++;
endif;
$totaal += $ogen;
$worpen ++;
if ( $worpen <= $maxworpen ):
echo 'Worp ';
else:
echo 'Bonus';
endif;
echo 'Worp '.$worpen.': '.$cijfers[$ogen].'<br>';
endwhile;
echo 'Totaalscore: '.$totaal;
?>
Gewijzigd op 03/10/2014 17:44:47 door Wouter Van Marrum
Klopt idd dat een array bij 0 begint.
Ik heb de code nog een klein beetje aangepast omdat de integer waarde wel van 1 t/m 6 moet zijn.
Ik heb daarom de eerste array waarde leeg gelaten.
Quote:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$cijfers = array('', 'één', 'twee', 'drie', 'vier', 'vijf', 'zes' );
$maxworpen = 3;
$worpen = 0;
$bonus = 0;
while ( $worpen < ($maxworpen + $bonus) ):
$ogen = mt_rand( 1, 6 );
if( $ogen == 1 || $ogen == 6 ):
$bonus ++;
endif;
$totaal += $ogen;
$worpen ++;
if ( $worpen <= $maxworpen ):
echo 'Worp '.$worpen.': '.$cijfers[$ogen].'<br>';
else:
echo 'Bonus '.$worpen.': '.$cijfers[$ogen].'<br>';
endif;
endwhile;
echo 'Totaalscore: '.$totaal;
?>
$cijfers = array('', 'één', 'twee', 'drie', 'vier', 'vijf', 'zes' );
$maxworpen = 3;
$worpen = 0;
$bonus = 0;
while ( $worpen < ($maxworpen + $bonus) ):
$ogen = mt_rand( 1, 6 );
if( $ogen == 1 || $ogen == 6 ):
$bonus ++;
endif;
$totaal += $ogen;
$worpen ++;
if ( $worpen <= $maxworpen ):
echo 'Worp '.$worpen.': '.$cijfers[$ogen].'<br>';
else:
echo 'Bonus '.$worpen.': '.$cijfers[$ogen].'<br>';
endif;
endwhile;
echo 'Totaalscore: '.$totaal;
?>
Groet, Mark
Gewijzigd op 04/10/2014 09:59:30 door Fester Splinter
- Waarom spring je niet netjes in met een 'tab' (zodat lussen en if statements VEEL beter leesbaar worden)?
- Waarom niet zoals iedereen gewoon { en } aan het begin en eind van loops en if statements? Veel beter leesbaar!!
- Waarom initialiseer je de $totaal variabele niet, ik krijg hier een NOTICE op:
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
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
<?php
$cijfers = array('één', 'twee', 'drie', 'vier', 'vijf', 'zes' );
$maxworpen = 3;
$worpen = 0;
$bonus = 0;
$totaal = 0;
while($worpen < ($maxworpen + $bonus) )
{
$ogen = mt_rand(1, 6);
if( $ogen == 1 || $ogen == 6 )
{
$bonus ++;
}
$totaal += $ogen;
$worpen ++;
if( $worpen <= $maxworpen )
{
echo 'Worp '.$worpen.': '.$cijfers[$ogen - 1].'<br>';
}
else
{
echo 'Bonus '.$worpen.': '.$cijfers[$ogen - 1].'<br>';
}
}
echo 'Totaalscore: '.$totaal;
?>
$cijfers = array('één', 'twee', 'drie', 'vier', 'vijf', 'zes' );
$maxworpen = 3;
$worpen = 0;
$bonus = 0;
$totaal = 0;
while($worpen < ($maxworpen + $bonus) )
{
$ogen = mt_rand(1, 6);
if( $ogen == 1 || $ogen == 6 )
{
$bonus ++;
}
$totaal += $ogen;
$worpen ++;
if( $worpen <= $maxworpen )
{
echo 'Worp '.$worpen.': '.$cijfers[$ogen - 1].'<br>';
}
else
{
echo 'Bonus '.$worpen.': '.$cijfers[$ogen - 1].'<br>';
}
}
echo 'Totaalscore: '.$totaal;
?>
Gewijzigd op 04/10/2014 10:32:25 door Frank Nietbelangrijk
Op deze manier is het eerste array item niet item nul maar iten één. De volgende items tellen gewoon door dus dit zijn in dit geval 2, 3, 4, 5 en 6
Op deze manier hoef je aan de rest van je code niets te veranderen. mits daar geen fouten in zitten, dit heb ik niet gecontroleerd.)
Gewijzigd op 04/10/2014 11:18:22 door Pipo Clown