在PHP中快速创建大型数组

在PHP中快速创建大型数组,php,arrays,loops,multidimensional-array,Php,Arrays,Loops,Multidimensional Array,可能重复: 在基于C的语言中,您可以非常快速地创建一个大型多维数组,该数组可以与算法或其他东西的循环一起使用。像这样: int foo[50][40]; 在PHP中,如何做到这一点?目前,我唯一能想到的是: $bar = array(); for ($a = 0; $a<50; $a++) { for ($b = 0; $b++; $b<40) { $bar[$a][$b] = 0; } } $bar=array(); 对于基于PHP语言的($a

可能重复:

在基于C的语言中,您可以非常快速地创建一个大型多维数组,该数组可以与算法或其他东西的循环一起使用。像这样:

int foo[50][40];
在PHP中,如何做到这一点?目前,我唯一能想到的是:

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

对于基于PHP语言的($a=0;$a),您不需要“保留”创建数组。
但是只要在需要的时候,随时添加所需数量的元素即可


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

在基于PHP的语言中,您不需要“保留”创建数组。
但是只要在需要的时候,随时添加所需数量的元素即可


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

在PHP中,您不必预先定义数组的大小,您可以用数据动态地附加它,如下所示:

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

通过使用[]调用$bar,您将指示应创建一个新的键,在本例中,该键保持值$i。

在PHP中,您不必预定义数组的大小,您可以动态地将其附加数据,如下所示:

$bar = array();
for($i = 0;$i < 50;$i++) {
    $bar[] = $i;
}
$bar=array();
对于($i=0;$i<50;$i++){
$bar[]=$i;
}
通过使用[]调用$bar,您将指示应创建一个新的键,在本例中保持值$i。

请尝试以下操作:

$bar = range(0, 50);
foreach ($bar as $k => $v) {
    $bar[$k] = range(0, 40);
};
请尝试以下操作:

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

使用将加快速度(并使其占用更少的内存)。

使用将加快速度(并使其占用更少的内存)。

也许这一项可以帮助:

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

也许这个可以帮助:

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

这在很多情况下是不实际的,因为你没有按照预定义的顺序访问索引。这在很多情况下是不实际的,因为你没有按照预定义的顺序访问索引。QA已经在他的问题中发布了这个解决方案…@Polity不完全。OP假设数组构造类似于C-way,我只是演示一下事实并非如此。QA已经在他的问题中发布了此解决方案…@Polity不完全如此。OP假设阵列结构与C-way类似,我只是证明它不是。@Polity true-我确实搜索了,但没有寻找正确的东西-投票关闭了!@Polity true-我确实搜索了,没有寻找正确的东西,不是吗hough-已投票关闭!+1用于SplFixedArray…尽管它有其局限性,特别是在创建多维数组时+1用于SplFixedArray…尽管它有其局限性,特别是在创建多维数组时