2017-02-18 4 views
0

Я работаю над случайным генератором карт RPG, который вставляется в базу данных для последующего поиска. В основном пользователь вводит некоторые мелкие детали в форме и указывает, сколько плиток каждого ландшафта им нужно иметь на карте. Затем плитки произвольно вставляются в карту и базу данных. Я вставляю плитки в массив и затем перетасовываю результаты. Я делаю цикл через массив и цикл и X & Y сетку, чтобы вставить данные о местности. Но каждый раз, когда я делаю это, я получаю ошибку памяти: Фатальная ошибка: Разрешены памяти размером 268435456 байт исчерпаны (пытались выделить 32 байт) Это мой код:Попытка создать сетку в массиве возвращает фатальную ошибку памяти в php

$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"); 
} 

Очевидно, что я делаю что-то не так или, по крайней мере, я не пишу код достаточно эффективно. Прости меня, я все еще учусь. Может ли кто-нибудь помочь? Заранее спасибо.

ответ

0

Ничего. Это:

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

array_push($gridarray,"arctic"); 

Отсутствует 1 в $ arctiC++. Должно быть следующим:

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

array_push($gridarray,"arctic"); 

Теперь работает отлично. Не стесняйтесь использовать мой фрагмент выше для создания случайных карт для базы данных.

Смежные вопросы