Hulp gevraagd met PHP-opdracht
Nieuw hier op het forum dus excuus als dit bericht verkeerd is geplaatst.
Ben redelijk nieuw met PHP, volg een aantal opleidingen tegelijk om zo veel mogelijk kennis te vergaren. Voor 1 van de opleiders heb ik een opdracht waar ik mee worstel. In onderstaand script probeer ik een array te vullen met 60 willekeurige cijfers tussen 10 en 70. Vervolgens wil ik deze in een tabel van 6 bij 6 printen, waarbij elke regel 6 getallen heeft. De eerste 6 tussen 10 en 20, tweede rij tussen 20 en 30 enz.
Ik ben ervan op de hoogte dat ik slecht een regel heb en dat mijn <TR> en </TR> niet juist zijn geplaatst maar ik heb ze daar even "weggemoffeld". Deze code geeft een lege browserpagina. Elke keer als ik een aanpassingen maak waarvan ik denk dat dat het moet zijn, kreeg ik een foutmelding.
Wellicht is er iemand die mij een duwtje in de goede richting kan/wil geven. Ik hoef niet per se een oplossing op een presenteerblaadje ( ik ben immers aan het leren ) maar ik loop nu redelijk vast. Alvast bedankt voor eventuele antwoorden en mocht mijn code niet compleet genoeg zijn of als ik meer info moet verschaffen hoor ik dat graag!
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
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Inzendopdracht 051R3</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body bgcolor="#FFFFFF">
<TABLE>
<?php
$random_array = array();
function fill_table($array) {
for($j=10; $j<=70; $j++) {
$array[] = [mt_rand(10,70)];
}
return $array;
}
fill_table($random_array);
function print_table($arrayPrint) {
for ($j=0; $j < 6; $j++) {
if ($arrayPrint < 20 ) {
echo ("<TR><TD>" . $arrayPrint . "</TD></TR>");
}
}
}
print_table($random_array);
?>
</TABLE>
</body>
</html>
<html>
<head>
<title>Inzendopdracht 051R3</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body bgcolor="#FFFFFF">
<TABLE>
<?php
$random_array = array();
function fill_table($array) {
for($j=10; $j<=70; $j++) {
$array[] = [mt_rand(10,70)];
}
return $array;
}
fill_table($random_array);
function print_table($arrayPrint) {
for ($j=0; $j < 6; $j++) {
if ($arrayPrint < 20 ) {
echo ("<TR><TD>" . $arrayPrint . "</TD></TR>");
}
}
}
print_table($random_array);
?>
</TABLE>
</body>
</html>
Bij voorbaat dank,
Elian
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 24/11/2014 11:36:54 door - Ariën -
En return value word niet magisch opgevangen maar moet je zelf doen, voorbeeld :
Code (php)
Daar zou je een eind mee moeten komen :)
Gewijzigd op 24/11/2014 12:10:36 door Jacco Engel
Maar ik snap de opdracht niet helemaal.
met 6x6 heb je maar 36 van de 60 waarden.
Bij de eerste 36 zitten niet per se de waarden tussen 10 en 20. en ook niet per se 6 stuks.
Wat gebeurt er dan in de eerste rij van je tabel?
Net zo voor de volgende 6 rijen.
Ik moet de resultaten natuurlijk opvangen in een variable. Nooit aan gedacht. :S
Hartelijk dank voor de tip. Ik ben er momenteel een beetje mee aan het spelen, krijg nog niet het gewenste resultaat maar er zit nog ergens een foutje in mijn code. We geven niet gelijk op dus ik speel er nog even mee verder voordat ik weer voor hulp terug kom.
@Ivo:
Ik heb door middel van shuffle de tabel goed gekregen maar ik heb de indruk dat het bij deze opdracht de bedoeling is dat ik van de mt_rand methode gebruik maak.
Het doel van de opdracht is een bingokaart maken. Nadat ik de tabel gevuld heb met een aantal van de 60 getallen moet uit de volle array ( dus de volle 60 getallen ) random getallen laten trekken en die afstrepen op de "bingokaart"-tabel. Voorlopig worstel ik eerst nog met het juist afdrukken van de bingokaart zelf. Haha. Dank voor de tip!
@-Aar- Ik zal in het vervolg de code tags gebruiken. :)
in principe kan
best 100x het getal 12 opleveren.
@Ivo; dit is inderdaad niet de bedoeling, nee. Ook nog niet aan gedacht. Ik had de indruk dat ik aardig op weg was met de opdracht maar dat blijkt toch iets minder het geval. Haha.
Kan iemand mij wellicht een tip geven over hoe ik een multidimensionale array kan vullen door middel van een for-loop? Heb een aantal verschillende dingen geprobeerd maar blijf op foutmeldingen stuiten. 1 van mijn laatste pogingen betrof bijvoorbeeld onderstaand voorbeeld.
Code (php)
Alle duwtjes in de goede richting worden zeer op prijs gesteld! :)
Ik denk dat je deze code in een functie geplaatst hebt. Zodra er tegen de return opdracht aangelopen wordt dan wordt de hele functie verlaten. Je dubbele lus zal dus bij de eerste 'loop' direct verlaten worden.
Waarom begin je niet wat kleiner stapje voor stapje. Bijvoorbeeld:
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
Toevoeging op 05/12/2014 13:27:48:
Ik heb inderdaad veel moeite met arrays. Voornamelijk de multidimensionale. Het duurt lang bij mij voordat het kwrtje valt jammer genoeg. De overige onderdelen pak ik redelijk snel op maar arrays willen er niet in.
De opdracht vermeld expliciet dat ik functies moet maken op de array te vullen en om de tabel af te drukken. Arrays zelf zijn al moeilijk genoeg voor me in dit stadium, combineren met functies is blijkbaar een dodelijke combinatie.
Toevoeging op 05/12/2014 13:37:27:
Dank voor de waardevolle toevoegingen. Ben hier heel blij mee.
Ik ben wat aan het spelen met beide codes om wat dingen uit te proberen.
Als ik nu de eerste rij van de tabel zou willen vullen met een array die de getallen 10 t/m 19 bevat. En de volgende rij 20 t/m 29 etc. Hoe ga ik dit dan het beste aanpakken ( denk ook een beetje hardop hier.)
Gewijzigd op 05/12/2014 13:44:33 door Henkie Prut
Elian Kloppenburg op 05/12/2014 13:20:33:
Als ik nu de eerste rij van de tabel zou willen vullen met een array die de getallen 10 t/m 19 bevat. En de volgende rij 20 t/m 29 etc. Hoe ga ik dit dan het beste aanpakken ( denk ook een beetje hardop hier.)
Hou de dingen uit elkaar. En dan doel ik met name op het volgende:
Een array-key is heel iets anders dan de waarde die je daar in opslaat:
de array met key 0 heeft nu 10 als waarde
de array met key 1 heeft nu 11 als waarde
Je moet dus zorgen dat de key telkens met 1 verhoogd wordt, beginnend bij 0
en dat de waarde ook telkens met 1 verhoogd wordt, maar beginnend bij 10
Er zijn misschien 50 manieren om dit te bewerkstelligen maar de meeste programmeurs zullen zo veel mogelijk met een rekensommetje werken en zo min mogelijk vaste waardes.
dus:
Code (php)
1
2
3
4
2
3
4
<?php
for $i = 0 ; $i < 10 ; $i++) // 0 t/m 9
$tabel[$i] = $i + 10; // 0+10=10, 1+10=11, 2+10=12 etc
?>
for $i = 0 ; $i < 10 ; $i++) // 0 t/m 9
$tabel[$i] = $i + 10; // 0+10=10, 1+10=11, 2+10=12 etc
?>
Nu iets moeilijker met twee dimensionale array:
Code (php)
(Als eerste wordt uitgerekend wat tussen haakjes staat)
@Frank: ik had hetzelfde effect bereikt door middel van verschillende if/elseif statements binnen mijn for lop maar jouw oplossing is uiteraard veel minder omslachtig! Top! ik leer hier veel van. Meer dan de "feedback" van de leraar. :S
Toevoeging op 05/12/2014 15:48:37:
Mag ik jullie allen onwijs bedanken voor jullie hulp!
Ik heb hier een eeuwigheid op vastgezeten maar ik heb de tabel eindelijk voor elkaar! De shuffle functie zit er ook in verwerkt. Alles is ook een stuk duidelijker. Mijn code zal misschien nog niet 100% optimaal zijn maar ik ben iig heel erg blij met dit resultaat! Volgende stap is om er een werkende bingokaart van gemaakt maar dit moet vast ook gaan lukken. Voor de geïnteresseerden, dit is mijn code so far:
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
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Inzendopdracht 051R3</title>
<meta charset=UTF-8" />
</head>
<body bgcolor="#FFFFFF">
<Table width="400">
<style type="text/css">
table, th, td {
border: 1px solid black;
text-align: center;
padding: 20px;
font-family: verdana, open-sans;
font-weight: bold;
font-size: 18px;
}
</style>
<?php
$random_array = array();
function fill_array($array) {
for ($j = 0; $j < 6; $j++) {
for ($i = 0; $i < 10; $i++) {
$array[$j][$i] = $i + (10 * ($j +1));
}
}
for ($k=0; $k<6; $k++) {
shuffle($array[$k]);
}
return $array;
}
$array_fill = fill_array($random_array);
function print_array($array2) {
for ($y=0; $y < 6; $y++){
echo("<TR>");
for ($x=1; $x < 7; $x++) {
echo ("<TD>" . $array2[$y][$x] . "</TD>");
}
echo "</TR>";
}
}
print_array($array_fill);
?>
</table>
</body>
</html>
<html>
<head>
<title>Inzendopdracht 051R3</title>
<meta charset=UTF-8" />
</head>
<body bgcolor="#FFFFFF">
<Table width="400">
<style type="text/css">
table, th, td {
border: 1px solid black;
text-align: center;
padding: 20px;
font-family: verdana, open-sans;
font-weight: bold;
font-size: 18px;
}
</style>
<?php
$random_array = array();
function fill_array($array) {
for ($j = 0; $j < 6; $j++) {
for ($i = 0; $i < 10; $i++) {
$array[$j][$i] = $i + (10 * ($j +1));
}
}
for ($k=0; $k<6; $k++) {
shuffle($array[$k]);
}
return $array;
}
$array_fill = fill_array($random_array);
function print_array($array2) {
for ($y=0; $y < 6; $y++){
echo("<TR>");
for ($x=1; $x < 7; $x++) {
echo ("<TD>" . $array2[$y][$x] . "</TD>");
}
echo "</TR>";
}
}
print_array($array_fill);
?>
</table>
</body>
</html>
Nogmaals dank. Als ik het spel werkend heb ( of als ik jullie hulp weer nodig heb :P ) zal ik zeker even opnieuw posten.