2011-12-16 94 views
0

可能重复:
How to create an empty array in PHP with predefined size?在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; 
    } 
} 
+0

@Polity真的 - 我没有搜索,不是在寻找正确的事情,但 - 已投票决定关闭! – 2011-12-16 10:33:16

回答

2

在PHP中,你不必预先定义的数组的大小,你可以用动态数据添加它,就像这样:

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

通过调用[]的$吧,你会表明应该创建一个新的密钥,并且在这种情况下持有值$ i。

+0

QA已经在他的问题中发布了此解决方案...... – Polity 2011-12-16 10:29:06

+0

@Polity并非完全适用。 OP假设阵列结构与C-way相似,我只是证明它不是。 – Oldskool 2011-12-16 10:30:59

0

在基于PHP的语言中,您不需要创建“保留”数组。
但只要你需要,就随时添加你需要的任何数量的元素。

顺便说一句,如果速度不是简洁的代码,而是执行的速度,PHP肯定是错误的选择。

+1

在许多情况下,如果您没有按照预定义的顺序访问索引 – Polity 2011-12-16 10:27:40

0

尝试以下操作:

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

试试 - 为了什么? – 2011-12-16 10:29:56

2

使用SplFixedArray将加快,截至(并使其占用更少的内存)。

0

也许这可以帮助:

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