2013-11-08 3 views
0

Я хочу объявить около 100 массивов, например $game1_array, $game2_array ... $game100_array и использовать их в расчете. Могу ли я использовать какой-то вид, исходящий от 1 до 100, и объявлять их в 4 строках, а не объявлять их самостоятельно?PHP: вопрос о выпуске массива

Я попытался следующие, но это не сработало:

for ($i = 1; $i <= 100; $i++) { 
$game.'$i'._array = array(); 
} 

Пожалуйста, укажите ошибку.

+0

это '$ { 'игра' $ я .'_ массив. } 'на самом деле. Но почему? –

+3

Почему бы вам не использовать массив массивов? '$ game1_array, $ game2_array' - очень плохое дизайнерское решение – zerkms

ответ

4
for($i=1;$i<=100;$i++) 
{ 
    ${'game'.$i.'_array'} = array(); 
} 

var_dump($game2_array); 

см http://php.net/manual/en/language.variables.variable.php

+2

Может ли комментаторы прокомментировать, почему вы это делаете? Я согласен, что этот ответ напрямую отвечает на вопрос, но разве вы не думаете, что основное различие между ответами SO и yahoo заключается в том, что мы можем здесь мыслить и что наша миссия здесь состоит в том, чтобы научить людей не просто слепо давать им примеры дерьмового кода? – zerkms

+0

см., Я думаю, что указывание ошибок в принятом подходе является такой же частью «миссии», как показ потенциально лучшего: +1 для вашего ответа;) –

5

То, что вы пытаетесь сделать это плохое решение дизайна. Гораздо лучше создать массив, который содержит 100 вложенных массивов.

Это может быть сделано с таким кодом:

$games = array_fill(0, 100, array()); 

Тогда вы можете работать с ними, как:

$games[42][] = 'foo'; // would append a 'foo' item into 43rd array 
+2

Если массив численно проиндексирован, и вы знаете, что размер массива, вероятно, лучше использовать splFixedArrays –

+0

@onetrickpony: действительно, но, вероятно, это было бы слишком большим для новичков :-) – zerkms

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