+ 1

What is happening here?

Hello, Can someone help to figure out what is happening here? I put some comments in some of the lines. Tx for the help. <?php $card = array(); for ($row = 1; $row < 8; ++$row){ $card[$row] = array(); $deck = range(0,9); // make a array with 0 to 9 for ($kolom = 1; $kolom < 8; ++$kolom){ $index = mt_rand(0,count($deck) - 1);// is this a random number between 0 and 10 while the -1 removes the chosen one? $number = $deck[$index]; why is it like this and why not only the index number? $card[$row][] = $row . $number; //row + number to get random number is that correct? unset($deck[$index]); //empty the var $deck = array_values($deck); //how is it possible to do thit while the var has been unset? } } ?> Greetings Moos

14th Aug 2018, 5:51 AM
Moos
5 ответов
+ 7
Updated to show output... https://code.sololearn.com/wM2fcvu1h2e0
14th Aug 2018, 1:19 PM
John Wells
John Wells - avatar
+ 6
While it doesn't generate an error, I believe your line: $card[$row][] = $row . $number; is incorrect. I think the [] should be [$kolom]. Your $index assignment gets a random value of the remaining elements in $deck. $number gets assigned the value in the selected element. $card[$row][$kolom] would store a two digit number in that array position so, if $index was 5, $number would be 5 and 15 would be stored. The next loop, if $index was 5 once more, $number would be 6 and 16 would be stored. Your unset statement removes that array element without touching the others so the first loop would remove the 5 and the second the 6 in my example above. The $deck assignment is not needed as it only changes $deck to what it already was to begin with. $card would end up with a 7x7 set of numbers such as: 15 16 13 19 10 12 14 29 20 24 28 21 22 26 33 39 37 32 30 35 34 40 47 42 49 47 46 45 57 55 56 52 58 51 50 63 69 68 62 60 65 66 79 72 70 73 78 76 74
14th Aug 2018, 1:10 PM
John Wells
John Wells - avatar
+ 5
Added better comments to my code to reflect what is happening.
14th Aug 2018, 1:45 PM
John Wells
John Wells - avatar
+ 4
Okay. I was wrong. The $deck assignment is needed to close the gaps in the array. Without that line you still have an element there that can't be used.
14th Aug 2018, 1:25 PM
John Wells
John Wells - avatar
+ 1
Thank you so much. This helpt me a lot. Your right about to add $kolom in $card[$row][]. Thanks for the help.
14th Aug 2018, 3:41 PM
Moos