Заполнить массив значениями без цикла в PHP - PullRequest
10 голосов
/ 18 августа 2010

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

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

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

Но проще.

Ответы [ 5 ]

31 голосов
/ 18 августа 2010

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

$t = array_fill(0, $n, 'val');
3 голосов
/ 18 августа 2010

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

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

для получения желаемого эффекта.

См. array_pad () на php.net

1 голос
/ 14 мая 2015
$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
);
*/
1 голос
/ 18 августа 2010
$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";    

Вы поняли

0 голосов
/ 18 августа 2010

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