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

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

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

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

но проще.

5 ответов


использовать array_fill():

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

$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";    

идея


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

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

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

посмотреть array_pad () ВКЛ php.net


Это зависит от того, что вы имеете в виду. Есть функции для заполнения массивов, но все они будут использовать циклы за кулисами. Предполагая, что вы просто хотите избежать циклов в код код, вы можете использовать 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 
)

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

/* нам нужно аннулировать весь массив с помощью keep safe keys*/

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

var_export($a);

/*result:

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