PHP通过数据集递增[关闭]

    global $mysqli;
    $building = $position['buildingID'];     
    if($level == 'room') {

        // Get building size 
        $buildingQuery = "SELECT * FROM buildings WHERE buildingID = '$building'";
        $buildingArea = $mysqli->query($buildingQuery) or die(mysqli_error($mysqli));
        $Area = $buildingArea->fetch_array(MYSQLI_ASSOC);
        $AreaX = $Area['areaX'];
        $AreaY = $Area['areaY'];

        $sql = "SELECT * FROM rooms WHERE buildingID = '$building'";
        $result = $mysqli->query($sql) or die(mysqli_error($mysqli));
        $rooms = $result->fetch_array(MYSQLI_ASSOC);

        for($y = 0; $y <= $AreaY; $y++){
            for($x = 0; $x <= $AreaX; $x++) {
                //See if room exists for coordinates
                    if(($rooms['position_x'] == $x) && ($rooms['position_y'] == $y)
                        && ($position['room_x'] == $x) && ($position['room_y'] == $y)) {
                        echo '<img src="../../resources/images/inroom.php" id="'.$x.'_'.$y.'" />';
                        echo ' ';
                    } else if (($rooms['position_x'] == $x) && ($rooms['position_y'] == $y)) {
                            echo '<img src="../../resources/images/inroom.php" id="'.$x.'_'.$y.'" />';
                            echo ' ';
                    } else {
                        echo "(".$x.","." ".$y.")";
                        if ($x == $AreaX) {
                            echo '<br />'; 
                        }
                    }
            }
        }
    }
}

Basically the issue is I have a grid system, I need to display the result set where coordinate X, and Y, align in the database, but I don't really get how to increment the rows I'm retrieving, any advice?

EDIT: Code update

Try this. I took your fetching of rooms and took it outside the loops. Then I generated a map of room coordinates. That way you only have to loop through the rooms once instead of doing it for each row and column of the grid.

Then to round it up I iterate over the grid and check if the coordinates are in the map. If they are we have found a room, otherwise we have found a blank.

$rooms = $result->fetch_array(MYSQLI_ASSOC);

$map = array();

foreach($rooms as $room)
{
    $position_x = $room['position_x'];
    $position_y = $room['position_y'];
    $map[$position_x][$position_y] = $room;
}

for($y=0;$y<=$AreaY;$y++)
{
    for($x = 0; $x <= $AreaX; $x++) 
    {
        if(isset($map[$x][$y]))
        {
            // room
        }
        else {
            // blank
        }
    }
}