将相同的元素推送到阵列上x次

时间:2012-03-13 15:49:05

标签: php arrays

基本上我需要创建这个数组(给定x = 3)

array('?','?','?');

我能做到

for($i=0;$i<3;$i++)
    $arr[]='?';

但它并不那么优雅。还有其他办法吗?

2 个答案:

答案 0 :(得分:19)

使用array_fill( start_index, num, value )

$arr = array_fill(0, 3, '?');

答案 1 :(得分:0)

为了解决如何将同一元素多次推入数组的问题,值得注意的是,虽然 array_fill() 无疑是生成新数组的最优雅的选择,这是它唯一能做的。它实际上无法将元素推送到现有数组上。

因此,虽然基本循环并不是特别令人兴奋,但它确实适用于您想要添加现有数组的情况,无论它是否已经为空。

$arr = ['a', 'a', 'a'];

for ($i = 0; $i < 3; $i++) {
    $arr[] = 'b';
}
print_r($arr);
Array
(
    [0] => a
    [1] => a
    [2] => a
    [3] => b
    [4] => b
    [5] => b
)

要使用 array_fill() 实现相同的目的,它需要额外的合并:

$arr = array_merge($arr, array_fill(0, 3, 'b'));