使用php构建地图网格字符串


using php to build map grid string

我正在使用pp3Diso构建游戏地图。库使用一个字符串来确定要在每个网格单元中使用的图像,如下所示:01,01,01,01,01,01,01:02,01,01,01,01,01,01:01,01,01,01,01,01,01:01,01,01,01,01,01,01:01,01,01,01,01,01,01:01,01,01,01,01,01,01。我试图用while循环在PHP中拼凑出这种类型的字符串,但代码似乎在第一次迭代(01,01,01,01,01,01,01,01:)后就停止了。如何获得下面的代码来创建完整的字符串?

$mapStr = '';
$x = 1;
$y = 1;
while($x <= 500){
    while($y <= 500){
        $sql = 'SELECT * FROM '.CITIES.' WHERE city_x = '.$x.' AND city_y = '.$y;
        $result = $db->sql_query($sql);
        $city = $db->sql_fetchrow($result);
        if($city){
            $mapStr .= '02'.(($x < 500) ? ',' : '');
        }else{
            $mapStr .= '01'.(($x < 500) ? ',' : '');
        }
        $y++;
    }
    if($x == 500){
        $mapStr .= ':';
    }else if($x == 500 && $y == 500){
        $mapStr .= '';
    }
    $x++;
}
$return['map'] = $mapStr;

此外,有没有一种更有效的方法可以做到这一点,而不是查询每个单元格的数据库?

for循环中更容易做到:

$columns = 501;
$rows = 501;
for($x = 1; $x < $columns; $x++){
    for($y = 1; $y < $rows; $y++){
        $sql = 'SELECT * FROM '.CITIES.' WHERE city_x = '.$x.' AND city_y = '.$y;
        $result = $db->sql_query($sql);
        $city = $db->sql_fetchrow($result);
        if($city){
            $mapStr .= '02';
        }else{
            $mapStr .= '01';
        }
        if($y < 500){
            $mapStr .= ',';
        }elseif($y == 500){
            $mapStr .= ':<br />';
        }
    }
    $sql = 'SELECT * FROM '.CITIES.' WHERE city_x = '.$x.' AND city_y = '.$y;
    $result = $db->sql_query($sql);
    $city = $db->sql_fetchrow($result);
    if($city){
        $mapStr .= '02';
    }else{
        $mapStr .= '01';
    }
    if($y < 500){
        $mapStr .= ',';
    }elseif($y == 500){
        $mapStr .= ':<br />';
    }
}
echo $mapStr;