【问题标题】:Quickly create large arrays in PHP [duplicate]在 PHP 中快速创建大型数组 [重复]
【发布时间】:2011-12-16 10:22:28
【问题描述】:

可能重复:
How to create an empty array in PHP with predefined size?

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

int foo[50][40];

在 PHP 中,你怎么能做到这一点?目前,我能想到的唯一方法是:

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

【问题讨论】:

  • @Polity true - 我确实搜索过,但没有找到正确的东西 - 已投票关闭!

标签: php arrays loops multidimensional-array


【解决方案1】:

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

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

通过使用 [] 调用 $bar,您将指示应该创建一个新键,在这种情况下保持值 $i。

【讨论】:

  • QA 已经在他的问题中发布了这个解决方案...
  • @Polity 不完全是。 OP 假设数组构造类似于 C 方式,我只是证明它不是。
【解决方案2】:

使用SplFixedArray 会加快速度(同时减少占用的内存)。

【讨论】:

  • +1 for SplFixedArray.... 虽然它有其局限性,尤其是在创建多维数组时
【解决方案3】:

尝试以下方法:

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

【讨论】:

    【解决方案4】:

    也许这个可以帮助:

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

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

      • 这在很多情况下是不切实际的,因为您没有按预定义的顺序访问索引
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-17
      • 2014-11-14
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      相关资源
      最近更新 更多