【问题标题】:Trying to create a grid map in an array returns a fatal memory error in php尝试在数组中创建网格图会在 php 中返回致命的内存错误
【发布时间】:2017-07-08 05:28:26
【问题描述】:

我正在开发一个随机 RPG 地图生成器,该生成器被插入到数据库中以供以后检索。基本上,用户将在表单上输入一些次要细节,并指定他们需要在地图上拥有多少个地形的瓦片。然后将图块随机插入到地图和数据库中。我将瓷砖插入一个数组,然后随机播放结果。我循环遍历数组并循环遍历 X 和 Y 网格以插入地形数据。但是每次我这样做时,都会出现内存错误:致命错误:允许的内存大小为 268435456 字节已用尽(尝试分配 32 字节)这是我的代码:

$gridarray = array();

for ($jungle1 = 0; $jungle1 <= $jungle -1; $jungle1++) {
array_push($gridarray,"jungle");
}

for ($swamp1 = 0; $swamp1 <= $swamp -1; $swamp1++) {
array_push($gridarray,"swamp");
}

for ($cave1 = 0; $cave1 <= $cave -1; $cave1++) {
array_push($gridarray,"cave");
}

for ($mountain1 = 0; $mountain1 <= $mountain -1; $mountain1++) {
array_push($gridarray,"mountain");
}
for ($ocean1 = 0; $ocean1 <= $ocean -1; $ocean1++) {
array_push($gridarray,"ocean");
}

for ($volcanic1 = 0; $volcanic1 <= $volcanic -1; $volcanic1++) {
array_push($gridarray,"volcanic");
}

for ($desert1 = 0; $desert1 <= $desert -1; $desert1++) {
array_push($gridarray,"desert");
}

for ($dirt1 = 0; $dirt1 <= $dirt -1; $dirt1++) {
array_push($gridarray,"dirt");
}

for ($forest1 = 0; $forest1 <= $forest -1; $forest++) {

array_push($gridarray,"dirt");
}

for ($arctic1 = 0; $arctic1 <= $arctic -1; $arctic++) {

array_push($gridarray,"arctic");
}

for ($grass1 = 0; $grass1 <= $grass -1; $grass++) {

array_push($gridarray,"grass");
}

echo '<table cellspacing="0" cellpadding="0" border="0">';
$gridsquare = $xsize * $ysize;

$grid = 0;
shuffle($gridarray);



for ($x = 1; $x <= $xsize; $x++) {
    echo '<tr>';
          for ($y = 1; $y <= $ysize; $y++) {

           $terrain = $gridarray[$grid];
           $terrain_img = 'http://www.sw-bfs.com/images/grids/' . $terrain . '.png';

$query2 = " INSERT INTO terrain ( ent_id, ent_type, grid_img, grid_type, grid_exit_e, grid_exit_w, grid_exit_s, grid_exit_n, grid_exit_u, grid_exit_d, x, y)  VALUES ( '$loc_id', 'terrain', '$terrain_img', '$terrain','1', '1', '1', '1', '0', '0', '$x', '$y') "; 

 $result2 = mysql_query($query2) or die(mysql_error());

echo '<td><img src="' . $terrain_img . '" title="' . $terrain . '"/></td>';

$grid++;



} 
echo '</tr>';


} 
echo "</table>";

它告诉我错误发生在如下行:

array_push($gridarray,"arctic");
}

显然我做错了什么,或者至少我没有足够有效地编写代码。原谅我,我还在学习。有人可以提供更好的帮助吗?提前谢谢你。

【问题讨论】:

    标签: php arrays memory grid fatal-error


    【解决方案1】:

    没关系。这个:

    for ($arctic1 = 0; $arctic1 <= $arctic -1; $arctic++) {
    
    array_push($gridarray,"arctic");
    

    $arctic++ 中缺少 1。应该是这样的:

    for ($arctic1 = 0; $arctic1 <= $arctic -1; $arctic1++) {
    
    array_push($gridarray,"arctic");
    

    现在完美运行。随意使用我上面的 sn-p 为数据库创建随机映射。

    【讨论】:

      猜你喜欢
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-26
      • 1970-01-01
      • 2014-04-01
      • 2017-04-02
      • 1970-01-01
      相关资源
      最近更新 更多