Бързо създаване на големи масиви в 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 вярно - търсих, но не търсех правилното нещо - гласувах за затваряне!   -  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
@Polyty Не съвсем. 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