Yazhe tutorial

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Fester Splinter

Fester Splinter

03/10/2014 17:29:59
Quote Anchor link
Hi Allemaal,

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?
 
PHP hulp

PHP hulp

13/03/2025 01:37:00
 
Wouter Van Marrum

Wouter Van Marrum

03/10/2014 17:42:41
Quote Anchor link
jouw script over genomen resulteert in :
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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;

?>
Gewijzigd op 03/10/2014 17:44:47 door Wouter Van Marrum
 
Fester Splinter

Fester Splinter

04/10/2014 09:57:30
Quote Anchor link
Bedankt voor je reactie Wouter,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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;

?>


Groet, Mark
Gewijzigd op 04/10/2014 09:59:30 door Fester Splinter
 
Frank Nietbelangrijk

Frank Nietbelangrijk

04/10/2014 10:30:21
Quote Anchor link
- Waarom het eerste array element leeg laten? je kunt toch gewoon $ogen verlagen met 1?
- 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)
PHP script in nieuw venster Selecteer het PHP script
1
Notice: Undefined variable: totaal in C:\xampp\www\yatzhe.php on line 17


Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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;

?>
Gewijzigd op 04/10/2014 10:32:25 door Frank Nietbelangrijk
 
Pipo Clown

Pipo Clown

04/10/2014 11:16:27
Quote Anchor link
je kunt het eerste array item ook een index meegeven :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$cijfers = array(1 => 'n', 'twee', 'drie', 'vier', 'vijf', 'zes' );


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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.