Быстро создавать большие массивы в PHP

Возможный дубликат:
Как создать пустой массив в PHP с заданным размером?

В языке на основе C вы можете очень быстро создать большой многомерный массив, который вы можете использовать в сочетании с циклами для алгоритма или чего-то еще. Вот так:

int foo[50][40];

В PHP, как вы можете это сделать? На данный момент единственный способ, который я могу придумать, это:

$bar = array();
for ($a = 0; $a<50; $a++) {
    for ($b = 0; $b++; $b<40) {
        $bar[$a][$b] = 0;
    }
}

person Alex Coplan    schedule 16.12.2011    source источник
comment
@Polity true - я искал, но не искал то, что нужно - проголосовал за закрытие!   -  person Alex Coplan    schedule 16.12.2011


Ответы (5)


В PHP вам не нужно заранее определять размер вашего массива, вы можете динамически добавлять к нему данные, например:

$bar = array();
for($i = 0;$i < 50;$i++) {
    $bar[] = $i;
}

Вызывая $bar с помощью [], вы указываете, что должен быть создан новый ключ, и в этом случае он содержит значение $i.

person Oldskool    schedule 16.12.2011
comment
QA уже опубликовал это решение в своем вопросе... - person Polity; 16.12.2011
comment
@Политика Не совсем. OP предполагает, что конструкция массива похожа на C-way, я просто демонстрирую, что это не так. - person Oldskool; 16.12.2011

Использование SplFixedArray ускорит это (а также уменьшит потребление памяти).

person Nikola Kotur    schedule 16.12.2011
comment
+1 для SplFixedArray.... хотя у него есть свои ограничения, особенно при создании многомерных массивов - person Mark Baker; 16.12.2011

Попробуйте следующее:

$bar = range(0, 50);
foreach ($bar as $k => $v) {
    $bar[$k] = range(0, 40);
};
person Tadeck    schedule 16.12.2011

может вот это поможет:

    $b = array_fill(0,50,0);
    $a = array_fill(0,50,$b);
//and so on, depending on how many dimensions do you need
person k102    schedule 16.12.2011

в языке на основе PHP вам не нужно создавать массивы «про запас».
Просто добавляйте необходимое количество элементов на лету, как только вам это нужно.

Кстати, если под скоростью подразумевается не лаконичный код, а скорость выполнения, то PHP — это уже точно неправильный выбор.

person Your Common Sense    schedule 16.12.2011
comment
это нецелесообразно во многих случаях, когда вы не обращаетесь к индексам в заранее определенном порядке. - person Polity; 16.12.2011