Function herhalen
- Eerst wordt er een willekeurig getal X aangemaakt.
- Vervolgens wordt er een functie gemaakt die ook weer een willekeurig getal Y aanmaakt. In deze functie worden X en Y vervolgens opgeteld tot getal Z en er wordt in de database gekeken of er al een rij bestaat waar getal Z in voor komt. Als dat het geval is moet de functie opnieuw worden geladen (getal Y moet opnieuw gegenereerd worden).
- Dan wordt de functie daadwerkelijk aangeroepen en de uitkomst in de database opgeslagen.
Hoe zorg ik er voor dat dit werkt? Het gaat eigenlijk om het herhalen van de functie (stap 2).
Bedankt!
Recursief?
Wat SanThe zegt. Je kan in je functie dezelfde functie opnieuw aanroepen.
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
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
<?php
$random_x=mt_rand(1,999);
$random_y=mt_rand(1,999);
function calculateNumber(){
global $db;
global $random_x;
global $random_y;
$random_extra_x=mt_rand(-100,100);
$random_extra_y=mt_rand(-100,100);
$random_total=$random_x+$random_extra_x+$random_y+$random_extra_y;
//controleren of getal al in database bestaat
$define_numbers_again=FALSE;
$query = "SELECT Id FROM numbers WHERE Random_number='".$random_total."'";
$result = mysql_query($query, $db);
if (mysql_num_rows($result) > 0) {
$define_numbers_again=TRUE;
}
if ($define_numbers_again==TRUE){
calculateNumber();
}else{
return $random_total;
}
}
$random_total=calculateDistance();
echo $random_total;
?>
$random_x=mt_rand(1,999);
$random_y=mt_rand(1,999);
function calculateNumber(){
global $db;
global $random_x;
global $random_y;
$random_extra_x=mt_rand(-100,100);
$random_extra_y=mt_rand(-100,100);
$random_total=$random_x+$random_extra_x+$random_y+$random_extra_y;
//controleren of getal al in database bestaat
$define_numbers_again=FALSE;
$query = "SELECT Id FROM numbers WHERE Random_number='".$random_total."'";
$result = mysql_query($query, $db);
if (mysql_num_rows($result) > 0) {
$define_numbers_again=TRUE;
}
if ($define_numbers_again==TRUE){
calculateNumber();
}else{
return $random_total;
}
}
$random_total=calculateDistance();
echo $random_total;
?>
Code (php)
Moet zijn
Idd, dat was de oplossing. Stom. Maar bedankt!
Snap je ook waarom?
Ja, want volgensmij is het toch een constante loop ofzo die gedraaid wordt? En nu geeft ie terug (return) dat de functie opnieuw gedraaid moet worden. Zoiets?
Als ie niet slaagt roept ie zichzelf weer aan.
En als dat dan goed gaat krijgt ie een return mee.
Maar hij valt dan terug op de regel waar ie werd aangeroepen.
Dus daar moet de return worden opgevangen en weer in een return gestopt worden anders ben je de returnwaarde kwijt.
Ik hoop dat dit te snappen is. Lastig zo om het even te verwoorden.
Niet recursief! Do/while!