Заполнить массив значениями без цикла в PHP

Есть ли какой-либо метод (который не использует цикл или рекурсию) для создания и заполнения массива со значениями?

Чтобы быть точным, я хочу иметь эффект

$t = array();
for($i = 0; $i < $n; $i++){
    $t[] = "val";
}

Но проще.

Ответ 1

используйте array_fill():

$t = array_fill(0, $n, 'val');

Ответ 2

Я думаю, вы можете использовать

$array = array_pad(array(), $n, "val");

чтобы получить желаемый эффект.

Смотрите array_pad() на php.net

Ответ 3

$a = array(); 
$a[] = "value";
$a[] = "value";
$a[] = "value";
$a[] = "value";
$a[] = "value";
$a[] = "value";
$a[] = "value";
$a[] = "value";
$a[] = "value";
$a[] = "value";
$a[] = "value";
$a[] = "value";
$a[] = "value";
$a[] = "value";
$a[] = "value";
$a[] = "value";
$a[] = "value";
$a[] = "value";
$a[] = "value";
$a[] = "value";
$a[] = "value";    

вы получаете идею

Ответ 4

Это зависит от того, что вы имеете в виду. Есть функции для заполнения массивов, но все они будут использовать петли за кулисами. Предполагая, что вы просто хотите избежать циклов в своем коде, вы можете использовать array_fill:

// Syntax: array_fill(start index, number of values; the value to fill in);
$t = array_fill(0, $n, 'val');

т.е.

<?php
    $t = array_fill(0, 10, 'val');
    print_r($t);
?>

Дает:

Array (
    [0] => val
    [1] => val
    [2] => val
    [3] => val 
    [4] => val 
    [5] => val 
    [6] => val 
    [7] => val 
    [8] => val 
    [9] => val 
)

Ответ 5

$a = array('key1'=>'some value', 'KEY_20'=>0,'anotherKey'=>0xC0DEBABE);

/* нам нужно свернуть целые массивы с сохранением безопасных ключей */

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

var_export($a);

/*result:

array(
     'key1'=>NULL, 
     'KEY_20'=>NULL,
     'anotherKey'=>NULL
);
*/