PHP通过数据集递增 global$mysqli; $building=$position['buildingID']; 如果($level=='room'){ //获取建筑尺寸 $buildingQuery=“从buildingID='$building'的建筑物中选择*; $buildingArea=$mysqli->query($buildingQuery)或die(mysqli_error($mysqli)); $Area=$buildingArea->fetch_数组(MYSQLI_ASSOC); $AreaX=$Area['AreaX']; $AreaY=$Area['AreaY']; $sql=“从buildingID=“$building”的房间中选择*; $result=$mysqli->query($sql)或die(mysqli_error($mysqli)); $rooms=$result->fetch_数组(MYSQLI_ASSOC); 对于($y=0;$y
请尝试此操作。我获取房间并将其置于循环之外。然后我生成了房间坐标图。这样,您只需在房间中循环一次,而无需对网格的每行和每列执行此操作 然后,为了取整它,我在网格上迭代,检查坐标是否在地图上。如果是,我们找到了一个房间,否则我们找到了一个空白PHP通过数据集递增 global$mysqli; $building=$position['buildingID']; 如果($level=='room'){ //获取建筑尺寸 $buildingQuery=“从buildingID='$building'的建筑物中选择*; $buildingArea=$mysqli->query($buildingQuery)或die(mysqli_error($mysqli)); $Area=$buildingArea->fetch_数组(MYSQLI_ASSOC); $AreaX=$Area['AreaX']; $AreaY=$Area['AreaY']; $sql=“从buildingID=“$building”的房间中选择*; $result=$mysqli->query($sql)或die(mysqli_error($mysqli)); $rooms=$result->fetch_数组(MYSQLI_ASSOC); 对于($y=0;$y,php,arrays,for-loop,mysqli,Php,Arrays,For Loop,Mysqli,请尝试此操作。我获取房间并将其置于循环之外。然后我生成了房间坐标图。这样,您只需在房间中循环一次,而无需对网格的每行和每列执行此操作 然后,为了取整它,我在网格上迭代,检查坐标是否在地图上。如果是,我们找到了一个房间,否则我们找到了一个空白 global $mysqli; $building = $position['buildingID']; if($level == 'room') { // Get building size
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 />';
}
}
}
}
}
}
$rooms=$result->fetch_数组(MYSQLI_ASSOC);
$map=array();
foreach($room作为$room)
{
$position_x=$room['position_x'];
$position_y=$room['position_y'];
$map[$position\u x][$position\u y]=$room;
}
对于($y=0;$yI不知道当前它是一个无限循环。为什么要在for循环中检索房间信息?它可能会发生变化吗?为什么不在循环外执行?您还应该查看while条件。如果我正确理解您的问题,那么有一组房间,您需要找到具有s的房间ame x和y位置,对吗?可能会改变,每个建筑都有不同的示意图,你是对的,是的,while循环被破坏了,但我不确定如何/为什么。要重申这个问题,我需要从建筑表中提取房间信息,房间的默认状态是空的,所以我只有两个不是空的条目,但是坐标不同。我需要输出“房间”、“空白”、“空白”、“房间”如果room等于循环x和y。^是的,我暂时在dev服务器上删除了它,它确实会永远运行,因为我不知道如何增加到下一个结果集。效果非常好,有时您只需要一个新的透视图。谢谢:DYou's welcome.:)
$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
}
}
}