Pagina 1 van 1

[PHP] For-lus random integers in array opslaan

Geplaatst: vr 15 nov 2019, 13:30
door N00b
Goedemiddag,

Ik probeer een tabel te maken met randomized nummers, dit doe ik door middel van een for-lus die ik gemaakt heb:

for($i = 1; $i < 7; $i++) {

$row[0] = rand(10, 19);

echo '<td>' . $row[0];
}

Ik vraag me alleen of of het mogelijk is om alle nummers uit een rij te kunnen opslaan in een nieuwe array, en hoe dit precies moet. Op de PHP manual kom ik er niet uit en vind ik ook niet echt een functie die in de buurt komt ervoor (waarschijnlijk kijk ik niet goed genoeg :? ).
Wanneer ik nu een extra variabele/array toevoeg om de waarde(s) van $row in op te slaan en deze print, komt alleen het laatste getal uit de betreffende for-lus in de variabele/array te staan.

Is er een mogelijkheid om voor elke iteratie van de lus het desbetreffende getal op te slaan?

Bij voorbaat dank!


p.s. $row is een array omdat deze vaker in mijn code voorkomt met verschillende waarde.

Re: [PHP] For-lus random integers in array opslaan

Geplaatst: vr 15 nov 2019, 13:46
door RedCat
Ik ben geen PHP programmeur, maar het lijkt er op dat je alleen $row[0] in je code een (random) waarde toekent.
Als je array met index 0 begint, dan zou ik zoiets verwachten:

for($i = 0; $i < 6; $i++) {
$row[$i] = rand(10, 19);
echo '<td>' . $row[$i];
}

Lost dit je probleem op?

Re: [PHP] For-lus random integers in array opslaan

Geplaatst: vr 15 nov 2019, 14:54
door N00b
Nee, dan wordt alleen de waarde $i = 6 bijgehouden.
Dat is de waarde uit de for-lus zelf.

Ik wil echt de willekeurige waarden uit $row[0] = rand(10, 19);

Er worden in deze lus in totaal 6 willekeurige getallen tussen 9 - 20 getrokken, en al die losse getallen wil ik kunnen opslaan in een losse array.

Hartstikke bedankt dat je je even over het probleem hebt gebogen!

Re: [PHP] For-lus random integers in array opslaan

Geplaatst: vr 15 nov 2019, 16:26
door Benm
Door dit te doen overschijf je telkens de waarde van $row[0], en houd je daarna $row als array over met 1 element met index 0 en een random waarde. Dat lijkt me nogal onlogisch, wat RedCat laat zien levert een array op met 6 elementen (indices 0 tot 5) met elk een waarde tussen 10 en 19 - ik neem aan dat je dat wilt?

Re: [PHP] For-lus random integers in array opslaan

Geplaatst: vr 15 nov 2019, 16:53
door N00b
Ik heb de code geprobeerd, maar dit geeft niet de waardes die in de tabel staan:

<?php
for($i = 0; $i < 6; $i++) {
$row[$i] = rand(10, 19);
echo '<td>' . $row[$i];
}
?>
</table>
<?php
var_dump($row[$i]);
?>

De output hiervan is:

14 15 14 15 18 14

Notice: Undefined offset: 6 on line 13
NULL

Mis ik daadwerkelijk iets?

Re: [PHP] For-lus random integers in array opslaan

Geplaatst: vr 15 nov 2019, 17:00
door RedCat
var_dump($row[$i]);
Hier gaat het mis.
$i is na het beeindigen van de for() lus 6, en $row[6] is niet gedefinieerd (alleen $row[0] t/m $row[5] bestaan).

Werkt het door deze regel te vervangen door
var_dump($row);
of
var_dump($row[]);
of iets dergelijks?

Re: [PHP] For-lus random integers in array opslaan

Geplaatst: vr 15 nov 2019, 17:30
door RedCat
Edit:
Of anders opnieuw een lus toevoegen:

for($i = 0; $i < 6; $i++) {
var_dump($row[$i]);
}

Re: [PHP] For-lus random integers in array opslaan

Geplaatst: vr 15 nov 2019, 17:35
door Benm
Nah, var_dump($row); of print_r($row); zou het gewoon moeten doen.

Re: [PHP] For-lus random integers in array opslaan

Geplaatst: zo 17 nov 2019, 19:14
door N00b
Hartstikke bedankt, het is me mede dankzij jullie gelukt!

Door een extra multidimensionale array toe te voegen die bij elke iteratie van de verschillende lussen de integers opslaat, ik gebruik de betreffende lus meerdere keren om in totaal een tabel van 6 x 6 te maken met hierin verschillende waarden.

for($j = 1; $j < 7; $j++) {

$row[$j][0] = rand(10, 19);

echo '<td>' . $row[$j][0];

}
$getrokkenGetallen = array(0 =>
array(00 => $row));

Wanneer ik na de verschillende lussen $getrokkenGetallen echo, komen alle random integers tevoorschijn zoals gewenst.

Mocht ik hier ergens de fout zijn ingegaan of is er een methode om dit beter te doen, hoor ik dat graag! :)

Mijn doel hiermee is een bingo spel maken, dus ik wil alle waarden uit elke rij van de verschillende kolommen kunnen opslaan om later te controleren tegen een aantal getrokken getallen.

Ik hoop dat ik het een beetje duidelijk geformuleerd heb op deze manier!

Nogmaals, mijn dank is groot. Mijn doel is bereikt, ik vind het alleen fijn om extra kritiek te ontvangen over eventuele aandachtspunten in deze syntaxis.

Re: [PHP] For-lus random integers in array opslaan

Geplaatst: zo 17 nov 2019, 20:03
door RedCat
Je 6x6 array $getrokkenGetallen kan je ook direct vullen:

Code: Selecteer alles

for($i = 1; $i < 7; $i++) {
    for($j = 1; $j < 7; $j++) {
        $getrokkenGetallen[$i][$j] = rand(10, 19);
        }
    }
Voor elke rij $i ga je met $j alle kolommen af, en geef je het array element $getrokkenGetallen[$i][$j] een random waarde via rand(10, 19).

Wil je voor je Bingo spel je array $getrokkenGetallen overigens niet vullen met allemaal VERSCHILLENDE waarden?