chris57828 Posted May 26, 2011 Share Posted May 26, 2011 Can someone help? I am new to PHP and trying to get some training in before I commence study in September. Below you will see the code for a very simple Lucky Lotto number generator, which generates six numbers at random from the $numbers array via the shuffle(). Being that I am a learner, in the most simple way possible I want to place the resulting 6 numbers in a new array, so I can use other functions to ascertain comparisons and results etc. <?php class Game { public $count; public $draw = array(1,15,16,27,30,18); public $numbers = array (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,10,41,42,43,44,45,46,47,48,49); function display($sub1) { $this->count = $sub1; while ($this->count>0) { shuffle($this->numbers); for($j=0;$j<6;$j++) echo $this->numbers[$j] . " "; echo "<br />"; shuffle($this->numbers); $this->count--; } } } $object1 = new Game(); $object1->display(1); ?> Quote Link to comment https://forums.phpfreaks.com/topic/237554-arrays/ Share on other sites More sharing options...
Maq Posted May 26, 2011 Share Posted May 26, 2011 You don't need that huge array, you can simply use rand. I revamped your code a bit: ini_set ("display_errors", "1"); error_reporting(E_ALL); class Game { function __construct() { //Constructor } function display($max) { $results = null; $i = 0; while($i { $results[] = rand(1,$max); echo " "; $i++; } print_r($results); return $results; } } $max = 35; $object1 = new Game(); $object1->display($max); ?> Quote Link to comment https://forums.phpfreaks.com/topic/237554-arrays/#findComment-1220709 Share on other sites More sharing options...
xyph Posted May 26, 2011 Share Posted May 26, 2011 The only real problem was you forgot the curly braces on your for loop. Here's another approach at your class though <?php class Game { private $numbers = array(); // makes sure these numbers can't be defined outside of the class // a special function that will be called when the class is made // $min=1 is the default value, in case the class is made without parameters public function __construct($min=1,$max=49) { if( $max<=$min ) throw new Exception('Max number is less than or equal to min number'); for($i=$min;$i<=$max;$i++) $this->numbers[] = $i; } function display($sub1,$sub2) { $return = ''; while ($sub1>0) { shuffle($this->numbers); // changed this a bit $first6 = array_slice($this->numbers,0,$sub2); $return .= implode(', ', $first6) . "<br />\n"; $sub1--; // Decrease this or the loop will run forever } return $return; } } try { $object1 = new Game(20,30); echo $object1->display(2,6); $object2 = new Game(30,20); echo $object2->display(1,5); } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(); } ?> Quote Link to comment https://forums.phpfreaks.com/topic/237554-arrays/#findComment-1220712 Share on other sites More sharing options...
xyph Posted May 26, 2011 Share Posted May 26, 2011 You don't need that huge array, you can simply use rand. I revamped your code a bit: Most lotteries don't have the same number showing up twice. An array would be the better way to do this, as you don't have to worry about duplicate numbers like you would with rand. Quote Link to comment https://forums.phpfreaks.com/topic/237554-arrays/#findComment-1220714 Share on other sites More sharing options...
Psycho Posted May 26, 2011 Share Posted May 26, 2011 public function __construct($min=1,$max=49) { if( $max<=$min ) throw new Exception('Max number is less than or equal to min number'); for($i=$min;$i<=$max;$i++) $this->numbers[] = $i; } Why not just use range() instead of creating a loop? public function __construct($min=1,$max=49) { if( $max<=$min ) throw new Exception('Max number is less than or equal to min number'); $this->numbers = range($min, $max); } Quote Link to comment https://forums.phpfreaks.com/topic/237554-arrays/#findComment-1220758 Share on other sites More sharing options...
xyph Posted May 26, 2011 Share Posted May 26, 2011 RANGE!!! THAT WAS THE FUNCTION I WAS LOOKING FOR! Couldn't remember the name, and I knew array_fill() wasn't the one I wanted. Thanks mjdamato Quote Link to comment https://forums.phpfreaks.com/topic/237554-arrays/#findComment-1220762 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.