Door
Henkie Prut
op 24-11-2014 11:32
gewijzigd op 24-11-2014 11:36
3.112 views
Goedemorgen allen,
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!
<!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>
random vullen van een array kan mooier:
<?php
$random_array = range(10,70);
shuffle($random_array);
?>
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.
@Jacco:
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. :)
@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.
Jammer genoeg nog steeds vast met deze opdracht. Begeleiding laat helaas wat te wensen over. Ik merk dat ik zelf moeite heb met het begrijpen van de multidimensionale arrays.
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.
één van de grootste fouten die je hier in ieder geval maakt is de return in je for.
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.
En een andere fout die je maakt is dat je probeert keys aan te roepen (2 en 3) die niet bestaan. Ik krijg de indruk dat je nog niet begrijpt hoe een array werkt.
Waarom begin je niet wat kleiner stapje voor stapje. Bijvoorbeeld:
Dank voor de tip, Frank. Ik had nooit meer gezien dat de return in de binnenste loop zat. Zit inmiddels al zo lang op deze opdracht vast dat dat soort dingen niet eens meer opvallen.
[size=xsmall]Toevoeging op 05/12/2014 13:27:48:[/size]
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.
[size=xsmall]Toevoeging op 05/12/2014 13:37:27:[/size]
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.)