在PHP中使用没有循环的值填充数组

liy*_*ysd 11 php syntax

是否有任何方法(不使用循环或递归)来创建并使用值填充数组?

确切地说,我希望有一个效果

$t = array();
for($i = 0; $i < $n; $i++){
    $t[] = "val";
}
Run Code Online (Sandbox Code Playgroud)

但更简单.

Ser*_*min 31

用途array_fill():

$t = array_fill(0, $n, 'val');
Run Code Online (Sandbox Code Playgroud)

  • Darn你打败了它; P对于任何感兴趣的人来说,事实证明array_fill比for循环版本快4倍 (3认同)
  • 这会创建一个填充数组,但它不会填充数组,这是两个*非常不同的东西*。 (2认同)

Frx*_*rem 5

我想你可以用

$array = array_pad(array(), $n, "val");
Run Code Online (Sandbox Code Playgroud)

以获得想要的效果。

请参阅php.net 上的array_pad()


小智 5

$a = array('key1'=>'some value', 'KEY_20'=>0,'anotherKey'=>0xC0DEBABE);
Run Code Online (Sandbox Code Playgroud)

/* 我们需要用保持安全的键来使整个数组无效*/

$a = array_fill_keys(array_keys($a),NULL);

var_export($a);

/*result:

array(
     'key1'=>NULL, 
     'KEY_20'=>NULL,
     'anotherKey'=>NULL
);
*/
Run Code Online (Sandbox Code Playgroud)