0rangeFish Posted December 10, 2014 Share Posted December 10, 2014 I'm getting an error: Undefined offset: 1 in… I'm trying to display a 2D array after filling it. It displays fine if I echo it while it's being made, but after it is not working. I'm making a pyramid solitaire game and am trying to set up the pyramid of cards. There are 7 arrays, each with a set amount of cards in them. The first array only gets one cards while the last array gets seven. This makes it like a pyramid. All the indexes that don't get a card are set to 0. So it looks like this where the 1's are cards: 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 The display2Darray function is what is causing the error. Specifically this line: if($array[$i][$j] == 0) Heres my main code: <?php include_once "pyramidCard.php"; include_once "pyramidDeck.php"; $theDeck = new Deck(); $pyramid = array(array(), array(), array(), array(), array(), array(), array()); $size = 7; $theDeck->shuffleCards(); makePyramid($pyramid, $size, $theDeck); display2Darray($pyramid, $size); //************************ // FRUNCTIONS * //************************ function makePyramid($array, $size, $deck) { $row = 0; for($i = 0; $i < $size; $i++) { for($j = 0; $j < $size; $j++) { if($j > $row) { $array[$i][$j] = 0; //echo ". <br>"; } else { $array[$i][$j] = $deck->dealCards(); //echo "this card is ".$array[$i][$j]->getFace()." of ".$array[$i][$j]->getSuit()."<br>"; } } $row++; } } function display2Darray($array, $size) { for($i = 0; $i < $size; $i++) { for($j = 0; $j < $size; $j++) { if($array[$i][$j] == 0) echo " "; else echo $array[$i][$j]->getFace()." of ".$array[$i][$j]->getSuit(); } echo "<br>"; } } ?> Link to comment https://forums.phpfreaks.com/topic/293014-2d-array-display-error-undefined-offset/ Share on other sites More sharing options...
CroNiX Posted December 10, 2014 Share Posted December 10, 2014 Hard to tell exactly without seeing an example of your array. Link to comment https://forums.phpfreaks.com/topic/293014-2d-array-display-error-undefined-offset/#findComment-1499228 Share on other sites More sharing options...
Ch0cu3r Posted December 10, 2014 Share Posted December 10, 2014 Im guessing the makePyramid() function is supposed to add the deck of cards to the $pyramid array? And display2Darray() function outputs the pyramid? Passing the variable to a function only sends its value to the function. It wont change the contents of the variable. Your display2Darray() function will be trying to get contents from an empty array. This is will be the cause of the undefined offset In order for you code to work as intended you can either pass $pyramid by reference function makePyramid(&$array, $size, $deck) Or the alternative is for the makePyramid() function to return the new array structure ($array) once it has dealt the cards. function makePyramid($array, $size, $deck) { ... return $array; } $pyramid = makePyramid($pyramid, $size, $deck); Please read the functioins documentation here - http://php.net/manual/en/language.functions.php Link to comment https://forums.phpfreaks.com/topic/293014-2d-array-display-error-undefined-offset/#findComment-1499230 Share on other sites More sharing options...
0rangeFish Posted December 10, 2014 Author Share Posted December 10, 2014 Ah yes, that was it. I just assumed it was pass by reference because in other languages I code in arrays are by default. Thanks! Link to comment https://forums.phpfreaks.com/topic/293014-2d-array-display-error-undefined-offset/#findComment-1499233 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.