将相同的元素 x 次推送到数组上

2022-08-30 21:08:02

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

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

我可以做

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

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


答案 1

使用array_fill( start_index、数字、值 )

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

答案 2

为了解决如何将同一元素多次推送到数组上的问题,值得注意的是,虽然这当然是生成新数组的最优雅的选择,但这是它唯一能做的。它实际上不能将元素推送到现有数组上。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'));