Skip to main content

PHP2

Print 2de array element

Gebruik array $myArray=[15,25,35,45,55,65] en druk het tweede element af (dit is dus 25).

Lever de code in en gebruik de naam php201a-jouw-naam.php

Find the right element

Vervang in de onderstaande code de xxx. Maak gebruik van het array $seizoenen en druk het juiste seizoen af.

$seizoenen=['lente', 'zomer', 'herfst', 'winter' ];

echo "Het koudste seizoen is de ".xxx;
echo "Het warmste seizoen is de ".xxx;

Lever de code in en gebruik de naam php201c-jouw-naam.php

Changing array value

Gebruik array

$myArray=[10,20,30,40,50,60];

Stap 1

Verander de eerste drie elementen één-voor-één in 3,2 en 1. Gebruik hiervoor code.

Dus niet de getallen 10, 20 en 30 vervangen in de regel $myArray=[10,20,30,40,50,60]) , maar een index (key) gebruiken en in drie afzonderlijke stappen de eerste drie waardes veranderen.

Stap 2

Druk alleen het 2de en 3de element af.

De output ziet er dan als volgt uit:

2
1

Vergeet de <br> niet!

Inleveren

  1. Lever de php code in.

Klasgenoten

Maak een array met namen van klasgenoten. Zet in ieder geval 10 namen in het array. De namen zijn strings dus denk erom dat de namen tussen " moeten staan.

Druk de inhoud van het array af en zet op elke regel een naam. Gebruik dus een <br> na elke naam. Gebruik een loop om de namen af te drukken (uitleg op vorige pagina) .

Inleveren

Lever de code in en gebruik de naam php202b-jouw-naam.php

Jouw naam in lijst, vet!

Maak de vorige opdracht en zorg ervoor dat jouw eigen naam ook ergens in het array staat. We hebben dus nog steeds een array met minstens tien namen.

Zet in de foreach loop een if statement. Als de loop bij jouw naam is dan dan druk je een !-teken af achter de naam.

Stel jij heet Omar, dan zou de if er zo uit zien:

if ($naam == "Omar") {
  echo "!";
}

Zet dit in de loop en controleer of er alleen achter jouw eigen naam een ! wordt afgedrukt.

Let er dus op dat de complete if in het code blok van de loop komt te staan. Let er ook op dat in het voorbeeld $naam wordt gebruikt, het kan zijn dat jij in jouw loop voor een andere variabele naam hebt gekozen.

Uitdaging (optioneel voor 2 bonuspunten): kun je je naam met uitroepteken ook vetgedrukt of misschien zelf rood-vergedruk afdrukken?

Inleveren

Lever de code in en gebruik de naam php202c-jouw-naam.php

Bereken functie

Berekenen met een function()

Zorg dat je de theorie hebt doorgelezen.

Bekijk het voorbeeld en maak een eigen functie. De berekening die de function moet maken is:

$output = $x * 2;

De output van de functie is alleen het resultaat (één getal dus). De output wordt met een return teruggeven.

Noem de function myVoornaam (vervang voornaam door jouw eigen voornaam) en test of je code werkt.
Test minimaal twee gevallen en laat de code die je hebt gebruikt om te testen in je code staan.

Inleveren

php203a-jouw-naam.php met daarin de function en de testcode.

Temperatuur

Temperatuur

Maak een function waarmee je de temperatuur van graden in Fahrenheit kan omrekenen.

Het omrekenen doe je als volgt:

$farenheit = ($celcius * 9/5) + 32;

Maak een function die aan de volgende voorwaarden voldoet:

function naam bedenk een logische naam
function input een getal, de temperatuur in graden celcius
function output een getal, de temperatuur omgerekend in graden fahrenheit

Test jouw functie . Roep de function op met tenminste 3 verschillende input waarden en druk de resultaten af. Laat deze testen in je code staan.

Op deze pagina kun je celcius in fahrenheit om laten rekenen. Gebruik deze site om te testen.

Inleveren

php203b-jouw-naam.php met daarin de function en tenminste drie testen waarin je laat zien dat de juisten waarden door de function laat berekenen.

De twee hoogste (bonus)

Deze opdracht is optioneel en verplicht voor eventuele "studieversnellers"

Maak een functie die één array als input krijgt en die de twee hoogste waarden van het array bij elkaar optelt.

Input Output
[12,3,21,5,3,20] 41
[12,3,21,5,3,20,21,3,2,1,-4,0] 42
[2,1] 3
[0,0] 0
[2] foutmelding: "array has only one value"

Laat in je code zien dat je al deze input scenario's test.

Inleveren

De code in met de naam php203c-optioneel-jouw-naam.php

Metingen

De onderstaande code heeft een complex array met metingen van de temperatuur. Elke dag heeft drie meetwaarden; 's morgens, 's middags en 's avonds.

Zo is de meetwaarde van de ochtend van de 2de dag 6 graden. Check of je dit terug kan vinden in het array $metingenWeek in de code.

Test de(ze) code uit.

$metingenWeek=[ [14,11,12], [ 6,11,11], [7,12,14], [9,14,13], [10,15,13] , [11,15,14 ], [13,16,14] ];

$dagNummer=0;

foreach($metingenWeek as $dag) {
    echo "Dag ".$dagNummer."<br>"; 
    echo "'s ochtends: ".$metingenWeek[0][0]."<br>";
    echo "'s middags : ".$metingenWeek[0][1]."<br>";
    echo "'s avonds  : ".$metingenWeek[0][2]."<br>";  
}

Probleem 1

Het dagnummer blijft op 0 staan. Los dit op en zorg ervoor dat de 7 dagen allemaal worden afgedrukt en dat het juiste dagnummer wordt afgedrukt. De dagnummers beginnen te tellen bij 1.

Pas de code aan zodat de dagnummers correct worden afgedrukt.

Probleem 2

Voor 's morgens, 's middags en 's avonds worden telkens dezelfde getallen afgedrukt. Dat klopt niet. In het voorbeeld staan voor dag 1 en dag 2 de juiste waarden afgedrukt. De programmeur heeft een foutje (of eigenlijk twee) gemaakt. Spoor de fout op en zorg ervoor dat de output klopt en dat de juisten getallen (temperaturen) worden afgedrukt.

Vergeet je code niet te testen!

Inleveren

De aangepaste en geteste code in php02-04a-jouw-naam.php

De hoogste meetwaarde

Je kunt deze opdracht alleen maken als je de vorige opdracht (goed) hebt gemaakt.

Je gaat het programmaatje dat je hebt gemaakt uitbreiden.

Je gaat je vorige programma aanpassen zodat de output er als volgt, komt uit te zien:

Dag 1:
  dagdeel 14
  dagdeel 11
  dagdeel 12
  hoogste waarde is 14

 Dag 2:
   dagdeel 6
   dagdeel 11
   dagdeel 11
   hoogste waarde is 11

 etc., etc.

Je drukt dus telkens per dag de hoogste temperatuur af. Dat doe je voor alle dagen.

Tip: kijk naar de PHP functie max() op https://www.w3schools.com/php/func_math_max.asp

Deze functie kan handig van pas komen. Je kan en mag de opdracht ook op een andere manier oplossen.

Gaat het jouw lukken? Succes!

Inleveren

De aangepaste en geteste code in php02-04b-jouw-naam.php

Loops voorspellen

Je hebt 5 loops (a t/m e). Bedenk vooraf van elke loop wat jij denkt dat die doet. Schrijf dat in eigen woorden op. Test daarna of je antwoorden kloppen en geef bij elke loop weer of je antwoord klopt. Als je antwoord niet klopt dan verbeter je je antwoord.

//loop A
for($i=1; $i<=20; $i=$i+1) {
  echo $i.", ";
}

//loop b
for($i=20; $i<30; $i=$i+1) {
  echo $i.", ";
}

//loop c
for($i=2; $i<100; $i=$i+2) {
  echo $i.", ";
}

//loop d
for($i=10; $i>0; $i=$i-1) {
  echo $i.", ";
}

//loop e
for($i=100; $i>0; $i=$i-2) {
  echo $i.", ";
}

Inleveren: een pdf bestand waarin je de stappen die hierboven staan beschreven bent doorgelopen. Het voorbeeld hieronder laat zien wat we als uitwerking ongeveer van je verwachten:

Voorbeeld:
//loop a
Deze loop begint bij 3 en wordt telkens 1 opgehoogd, de loop stop bij 10. Dus de output is 3,4,5,6,7,8,9,10

Nadat ik heb getest blijkt dat de 10 niet wordt afgedrukt dat komt omdat er <10 staat en niet <=10

//loop b

Deze loop .......

Ik heb getest en het antwoord klopt.

// loop c
 Deze loop.....

 Ik heb getest en ....

 // loop d
  Deze loop.....

 Ik heb getest en ....

 // loop e
  Deze loop .....

 Ik heb getest en ....

Inleveren

PDF, php205a-jouw-naam.pdf met de uitgewerkte opgaven.

foreach versus for

Je kunt een array ook met een for-loop doorlopen. Bestudeer de volgende code.

$myArray=[1,3,2];

foreach($myArray as $item) {
    echo $item;
    echo "<br>";
}

for($i=0; $i<3; $i++) {
    echo $myArray[$i];
    echo "<br>";
}

Test je code! Probeer de code uit en probeer te verklaren wat je ziet.

Maak code die het volgende array afdrukt één keer met een foreach-loop en daarna met een for-loop.

$myColors['rood','paars','oranje','blauw','wit'];

Inleveren

php205b-jouw-naam.php met de uitgewerkte code met de twee soorten loops.

Oneindig optellen

Opdracht

Maak een for-loop waarin alle getallen van 1 tot en met 100 worden opgeteld.

Jouw code laat de optelsom zien van 1+2+3+4+5+6+7+.....99+100.

Uitleg

Je kunt natuurlijk de volgende code inleveren:

echo 1+2+3+4+5+6+7+8+9+10+11+12;

En dan tot 100. Dat kan, maar stel dat ik nu vraag om alle getallen van 1 tot en met 10 000 op te tellen? Dan is dat bijna niet meer te doen. Je moet voor deze opdracht dan ook een loop gebruiken.

Als je niet weet hoe je dat aanpakt dan maak je dit probleem eerst eenvoudiger; je drukt eerst alle getallen 1 tot en met 100 af. Als dat gelukt is dan ga je al deze getallen bij elkaar op tellen.

Dus stel dat je dit doet voor de getallen 1 t/m 5 dan zou er 15 uitkomen (1+2+3+4+5=15).

Dus voor de duidelijkheid de code laat één getal zien en dat getal is dus de som van alle cijfers 1 t/m 100 .


Inleveren

php205c-jouw-naam.php met de uitgewerkte opgaven.

Nog meer functies

Nog een voorbeeld van een function

In deze les wordt een iets complexere functie gemaakt. In deze functie worden de even getallen uit een array gefilterd.

Parameters

Dat wat je meegeeft aan een function heten parameters. In de vorige voorbeelden (filmpjes) zagen we dat we telkens precies één parameter meegaven. In het eerste voorbeeld was dat een getal en in het tweede voorbeeld was dat een array.

Je kunt ook minder of meer parameter meegeven, bijvoorbeeld nul:

function welkom() {
    $tekst = 'Welkom op mijn website';
    return $tekst;    
}

En je kunt ook meer parameters meegeven, bijvoorbeeld drie:

function welkom2($tekst, $naam, $hoofdletters = FALSE ) {
    //bepaal tekst
    if ($tekst == 1) {
        $uitvoer = 'Welkom '. $naam;
    }
    elseif ($tekst == 2) {
        $uitvoer = 'Tot ziens, '.$naam;
    }
    //bepaal hoofdletters
    if ($hoofdletters == TRUE) {
        $uitvoer = strtoupper($uitvoer);
    }
    //geef resultaat
    return $uitvoer;
}

De derde parameter is wat vreemd want de waarde wordt al bepaald in de functie, althans zo lijkt het. Dit is een zogenaamde optionele parameter. Je hoeft hem niet mee te geven en als je hem niet meegeeft dan is die 'by default' false.

Dus

welkom2(2, 'Mark', False )
is hetzelfde als
welkom2(2, 'Mark')

Apart bestand

Als je veel functies hebt dan kun je die in een apart bestand zetten dat houd de boel overzichtelijk en maakt samenwerking ook makkelijker, omdat iedereen aan zijn eigen set functions kan werken.

Stel je zet de functie uit het laatste voorbeeld in een apart bestand met de naam mijnFuncties.php, dan zou de volgende code gewoon werken.

<?php
include_once('mijnFuncties.php');
echo welkom2(1,'Ayoub',true);
?>

Opdracht

Maak een php file, mijnFuncties.php met de functie welkom2() uit één van de voorbeelden van hierboven.

Maak een file php16a-jouw-naam.php en include het bestand mijnFuncties.php file.

Voeg de volgende regel toe aan php16a-jouw-naam.php

$mijnArray=['Nouaman','Aart','Samil','Raine','Diego','Olmer','Wessel','Jari','Maxey','Brian','Kikiya'];

Gebruik het bovenstaande array en roep voor elk van de namen de welkom2() functie twee maal aan, één keer om de welkom-boodschap af te drukken en één keer om de Tot-ziens-boodschap af te drukken.

Gebruik een loop en roep vanuit de loop de functie op de juiste manier aan.

foreach($mijnArray as $name) {
    // roep functie aan met welkom-bookdschap
    // roep functie aan met Tot-ziens-boodschap
}

Dus de output ziet er zo uit:

Welkom Nouaman
Tot ziens Nouaman

Welkom Aart
Tot ziens Aart

Welkom Samil
Tot ziens Samil

....

Welkom Kikiya
Tot ziens Kikiya


Inleveren

Drie bestanden:

  1. php16a-jouw-naam.php
    (vanuit dit bestand wordt de functie gebruikt die in mijnFuncties.php is gedefinieerd)

  2. mijnFuncties.php

  3. een screenshot van je browser inclusief URL waarin je het resultaat laat zien.

...

xxx Copy 6

In deze les gaan we stof herhalen. We gaan met functies werken en je leert onderdelen die je later later nodig hebt voor de challenge.

Opgave 1

We hebben een functie die het volgende doet. De functie krijgt drie waarden en returned de som van de twee getallen (dus de twee input variabelen opgeteld).

Input Output
mijnFunctie(3,2,1) 6
mijnFunctie(1,12,3) 16
mijnFunctie(0,4,0) 4
mijnFunctie(7,0,3) 10
mijnFunctie(0,0,0) 0

Maak een functie die dit doet.

En test met alle input waarden zoals hierboven aangegeven. Je kunt de volgende template gebruiken.

function mijnFunctie($a, $b, $c) {
   // maak hier de code voor jouw functie 
}

echo mijnFunctie(3,2,1);
echo "<br>";
echo mijnFunctie(1,12,3);
echo "<br>";
echo mijnFunctie(0,4,0);
echo "<br>";
echo mijnFunctie(7,0,3);
echo "<br>";
echo mijnFunctie(0,0,0);
Inleveren

Lever de code in en gebruik de naam php71-jouw-naam.php

Opgave 2

We hebben een functie die het volgende doet. De functie krijgt drie waarden en returned de som van de twee getallen (dus de twee input variabelen opgeteld). Er is nu een uitzondering. Zodra er een 0 in één van de input variabelen voorkomt dan wordt de return waarde 0.

Input Output
mijnFunctie(3,2,1) 6
mijnFunctie(1,12,3) 16
mijnFunctie(0,4,0) 0
mijnFunctie(7,0,3) 0
mijnFunctie(0,0,0) 0

Maak een functie die dit doet.

Gebruik de template van opgave 1.

Inleveren

Lever de code in en gebruik de naam php72-jouw-naam.php

Opgave 3

We hebben een functie die het volgende doet. De functie krijgt drie waarden en returned de som van de twee getallen (dus de twee input variabelen opgeteld). Er is nu een uitzondering. Zodra alle input variabelen 0 zijn wordt de return waarde 0.

Input Output
mijnFunctie(3,2,1) 6
mijnFunctie(1,12,3) 16
mijnFunctie(0,4,0) 4
mijnFunctie(7,0,3) 10
mijnFunctie(0,0,0) 0

Maak een functie die dit doet.

Gebruik de template van opgave 1.

Inleveren

Lever de code in en gebruik de naam php73-jouw-naam.php

Opgave 4

We hebben een functie die het volgende doet.

De functie telt de drie input waarden bij elkaar op.

Is de som groter of gelijk aan 10 dan wordt de return waarde 1.
Is de som kleiner dan 10 en groter dan 0 dan wordt de return waarde 0.
Is de som 0 dan wordt de return waarde -1.

Input Output
mijnFunctie(3,2,1) 0
mijnFunctie(1,12,3) 1
mijnFunctie(0,4,0) 0
mijnFunctie(7,0,3) 1
mijnFunctie(0,0,0) -1

Maak een functie die dit doet.

Gebruik de template van opgave 1.

Inleveren

Lever de code in en gebruik de naam php74-jouw-naam.php

Opgave 5 - array optellen

We hebben een functie die het volgende doet.

De functie telt alle waarden van een array bij elkaar op. De som alle getallen van het array wordt door de functie gereturned.

Let op het input array kan verschillende lengtes hebben.

Input Output
mijnFunctie( [3,2,1] ) 6
mijnFunctie( [1,12,3,1,2] ) 19
mijnFunctie( [1,12,3,1,2,1] ) 20
mijnFunctie( [2,4] ) 6
mijnFunctie( [4] ) 4

Maak een functie die dit doet.

Je kunt een array doorlopen met een foreach-loop zoals we in les 2 hebben gehad.

Je kunt de template van opgave 1 gebruiken, maar je moet deze wel aanpassen.

Inleveren

Lever de code in en gebruik de naam php74-jouw-naam.php

Opgave 7 - voetbal

De voetbaluitslagen staan in een array.

$uitslagen = [ [1,3], [4,0], [0,0] ,[1,1],[0,2] ];

In dit lijstje heeft de club FCR (Footbal Club Royal), vijf wedstrijden gespeeld. De uitslagen waren 1-3, 4-0, 0-0, 1-1 en 0-2.

Maak een functie die met deze uitslagen het aantal punten voor FCR uitrekent.

Voor een gewonnen wedstrijd krijgt FCR 3 punten, voor gelijkspel 1 punt en voor een verloren spel 0 punten.

Uitslag Punten
1-3 0
4-0 3
0-0 1
1-1 1
0-2 0

FCR heeft dus in dit voorbeeld 5 punten.

Maak een functie die de punten aan de hand van de uitslagen berekend.

Input Punten
[ [1,3], [4,0], [0,0] ,[1,1],[0,2] ] 5
[ [1,1], [0,0], [0,2] ,[1,1],[0,2] ] 3
[ [1,1], [0,0], [0,0] ,[1,1],[2,2] ] 5
[ [1,0], [1,0], [2,0] ,[1,1],[0,2] ] 10
Template
function berekenScore($uitslagen) {
  // bereken score
  
  
  return($score);
}

echo berekenScore([ [1,3], [4,0], [0,0] ,[1,1],[0,2] ]);
echo "<br>";
echo berekenScore([ [1,1], [0,0], [0,2] ,[1,1],[0,2] ]);
echo "<br>";
echo berekenScore([ [1,1], [0,0], [0,0] ,[1,1],[2,2] ]);
echo "<br>";
echo berekenScore([ [1,0], [1,0], [2,0] ,[1,1],[0,2] ]);

Inleveren

Lever de code in en gebruik de naam php77-jouw-naam.php

Opgave 8 - swap

In de vorige opgave hadden we het over de uitslag van een voetbalwedstrijd. Een uitslag 1,0 betekende dat de thuisploeg (FCR) 1 doelpunt heeft gemaakt en de uit spelende ploeg had 0 punten gescoord.

Soms staat de uitslag in de verkeerde volgorde. FCR heeft met 3-2 gewonnen en de uitslag is 2-3.

Nu moet jij een functie maken die twee getallen in een array omdraait.

Input Output
swap([1,2]) [2,1]
swap([3,2]) [2,3]
swap([1,1]) [1,1]
Template
function swap($uitslag) {
  // swap de twee elementen van het array
  
  
  return($swap);
}

print_r( swap($uitslag([2,1])) );
echo "<br>";
print_r( swap($uitslag([2,3])) );
echo "<br>";
print_r( swap($uitslag([1,1])) );
Inleveren

Lever de code in en gebruik de naam php78-jouw-naam.php