我正在使用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;