PHP - 创建一个包含N个空元素的动态数组

14
我想动态创建一个具有N个元素的数组,但我不知道N的值。类似于一个函数。
public function create_array($num_elements){

     .....
}

返回类似于以下内容的东西

//call the function.... 
create_array(3);

//and the output is: 
array{
   0 => null
   1 => null
   2 => null
}

我已经考虑过array_fill和简单的foreach循环。

还有其他解决方案吗?


做自己和其他人一个忙,直接使用array_fill。 - xzyfer
array_fill 是你最好的解决方案吗? - alesdario
1
array_fill是一个核心函数 - 没有什么比它更快了。你会对“最佳解决方案”有什么期望? - Stefan Gehrig
最好的解决方案。如果 array_fill 是速度最快、最容易使用的函数,那么它很可能是最佳解决方案(个人意见)。 - alesdario
6个回答

49

实际上,只需要调用array_fill函数:

//...
public function create_array($num_elements){
    return array_fill(0, $num_elements, null);
}
//..

var_dump(create_array(3));
/*
array(3) {
  [0]=> NULL
  [1]=> NULL
  [2]=> NULL
}
*/

3
for ($i = 0; $i < $num_elements; $i++) {
    $array[$i] = null;
}

2
这是最明显的解决方案,也是最好的(对于我的测试),因为其他解决方案并不比这个更快! - Melsi

1
array_fill(0, $element, null);

使用这个 PHP 函数,您可以创建起始索引为 0 的数组,且所有值均为空值。

0

array_fillforeach不起作用吗?

当然,最简单的解决方案是:

function create_array($num_elements) {
    $r = array();
    for ($i = 0; $i < $num_elements; $i++)
        $r[] = null;
    return $r;
}

array_fill 也应该可以工作:

function create_array($num_elements) {
    return array_fill(0, $num_elements, null);
}

0

使用array_fill函数似乎是最简单的解决方案:

$arr = array_fill($start_at, $num_elements, null);

0
foreach 循环中,你可以简单地使用 range()

不幸的是,range函数没有像array_fill那样提供设置默认值的方法。不过,它还是很接近! - Benjamin H Boruff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接