0

Possible Duplicate:
How to create an empty array in PHP with predefined size?

In a C-based language, you can very quickly create a large multi-dimensional array that you might use in conjunction with loops for an algorithm or something. Like so:

int foo[50][40];

In PHP, how can you do this? At the moment, the only way I can think of is this:

$bar = array();
for ($a = 0; $a<50; $a++) {
    for ($b = 0; $b++; $b<40) {
        $bar[$a][$b] = 0;
    }
}
Community
  • 1
  • 1
Alex Coplan
  • 13,211
  • 19
  • 77
  • 138

5 Answers5

3

In PHP, you don't have to predefine the size of your array, you can dynamically append it with data, like so:

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

By calling the $bar with [], you'll indicate that a new key should be created and in this case hold value $i.

Oldskool
  • 34,211
  • 7
  • 53
  • 66
2

Using SplFixedArray will speed that up (and also make it occupy less memory).

Nikola Kotur
  • 1,954
  • 3
  • 13
  • 15
0

in PHP-based language you don't need to create arrays "in reserve".
But just add whatever number of elements you need on the fly, as soon as you need it.

BTW, if speed means not the concise code but the speed of the execution, PHP is already a wrong choice for sure.

Your Common Sense
  • 156,878
  • 40
  • 214
  • 345
  • 1
    this is not practical in many cases where you are not accessing indexes in a predefined order – Polity Dec 16 '11 at 10:27
0

Try the following:

$bar = range(0, 50);
foreach ($bar as $k => $v) {
    $bar[$k] = range(0, 40);
};
Tadeck
  • 132,510
  • 28
  • 152
  • 198
0

maybe this one can help:

    $b = array_fill(0,50,0);
    $a = array_fill(0,50,$b);
//and so on, depending on how many dimensions do you need
k102
  • 7,861
  • 7
  • 49
  • 69