PHP 8.3.21 Released!

array_fill

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

array_fillЗаполняет массив значениями

Описание

array_fill(int $start_index, int $count, mixed $value): array

Функция заполняет массив значениями value столько раз, сколько указали в параметре count, начиная индексацию с ключа start_index.

Список параметров

start_index

Начальный индекс массива.

При отрицательном значении параметра start_index начальный индекс массива устанавливается равным значению start_index, а следующие индексы до PHP 8.0.0 продолжаются с нуля; начиная с PHP 8.0.0 отрицательные ключи увеличиваются последовательно, как показывает пример.

count

Количество элементов, которое требуется вставить. Параметр принимает значение, которое больше или равно нулю и меньше или равно 2 147 483 647.

value

Значение, которым требуется заполнить массив.

Возвращаемые значения

Функция возвращает массив, который заполнила повторными значениями.

Ошибки

Функция выбрасывает ошибку ValueError, если значение параметра count выходит за пределы допустимого диапазона.

Список изменений

Версия Описание
8.0.0 Функция array_fill() теперь выбрасывает ошибку ValueError, если значение параметра count выходит за пределы допустимого диапазона; раньше выдавалась ошибка уровня E_WARNING, а функция возвращала значение false.

Примеры

Пример #1 Пример заполнения массива функцией array_fill()

<?php

$a
= array_fill(5, 6, 'банан');
print_r($a);

?>

Результат выполнения приведённого примера:

Array
(
    [5]  => банан
    [6]  => банан
    [7]  => банан
    [8]  => банан
    [9]  => банан
    [10] => банан
)

Пример #2 Пример использования функции array_fill() с отрицательным начальным индексом

<?php

$a
= array_fill(-2, 4, 'груша');
print_r($a);

?>

Результат выполнения приведённого примера в PHP 8:

Array
(
    [-2] => груша
    [-1] => груша
    [0] => груша
    [1] => груша
)

Результат выполнения приведённого примера в PHP 7:

Array
(
    [-2] => груша
    [0] => груша
    [1] => груша
    [2] => груша
)

Обратите внимание, вывод до PHP 8.0.0 не содержит индекса -1.

Примечания

Подробное описание отрицательных ключей приводит раздел «Массивы».

Смотрите также

  • array_fill_keys() - Создаёт массив и заполняет его значениями с определёнными ключами
  • str_repeat() - Возвращает повторяющуюся строку
  • range() - Создаёт массив, который содержит диапазон элементов

Добавить

Примечания пользователей 6 notes

up
81
csst0266 at cs dot uoi dot gr
20 years ago
This is what I recently did to quickly create a two dimensional array (10x10), initialized to 0:

<?php
$a
= array_fill(0, 10, array_fill(0, 10, 0));
?>

This should work for as many dimensions as you want, each time passing to array_fill() (as the 3rd argument) another array_fill() function.
up
45
anatoliy at ukhvanovy dot name
10 years ago
If you need negative indices:
<?php
$b
= array_fill(-2, 4, 'pear');//this is not what we want
$c = array_fill_keys(range(-2,1),'pear');//these are negative indices
print_r($b);
print_r($c);
?>
Here is result of the code above:
Array
(
[-2] => pear
[0] => pear
[1] => pear
[2] => pear
)
Array
(
[-2] => pear
[-1] => pear
[0] => pear
[1] => pear
)
up
35
mchljnk at NOSPAM dot gmail dot com
11 years ago
Using objects with array_fill may cause unexpected results. Consider the following:

<?php
class Foo {
public
$bar = "banana";
}

//fill an array with objects
$array = array_fill(0, 2, new Foo());

var_dump($array);
/*
array(2) {
[0]=>
object(Foo)#1 (1) {
["bar"]=>
string(6) "banana"
}
[1]=>
object(Foo)#1 (1) {
["bar"]=>
string(6) "banana"
}
} */

//now we change the attribute of the object stored in index 0
//this actually changes the attribute for EACH object in the ENTIRE array
$array[0]->bar = "apple";

var_dump($array);
/*
array(2) {
[0]=>
object(Foo)#1 (1) {
["bar"]=>
string(5) "apple"
}
[1]=>
object(Foo)#1 (1) {
["bar"]=>
string(5) "apple"
}
}
*/
?>

Objects are filled in the array BY REFERENCE. They are not copied for each element in the array.
up
3
user at NOSPAM dot example dot com
3 years ago
As of PHP 8.0 the example code

<?php
$b
= array_fill(-2, 4, 'pear');
print_r($b);
?>

now returns

Array
(
[-2] => pear
[-1] => pear
[0] => pear
[1] => pear
)

See https://wiki.php.net/rfc/negative_array_index and https://github.com/php/php-src/pull/3772
up
1
miguelxpain at gmail dot com
13 years ago
I made this function named "array_getMax" that returns te maximum value and index, from array:

<?php
//using array_search_all by helenadeus at gmail dot com

function array_search_all($needle, $haystack)
{
#array_search_match($needle, $haystack) returns all the keys of the values that match $needle in $haystack

foreach ($haystack as $k=>$v) {

if(
$haystack[$k]==$needle){

$array[] = $k;
}
}
return (
$array);


}

function
array_getMax($array){

$conteo=array_count_values($array);

if(
count($conteo)==1 ){//returns full array when all values are the same.
return $array;
}

arsort($array);

//$antValue=null;
$maxValue=null;
$keyValue=null;
foreach(
$array as $key=>$value){
if(
$maxValue==null){
$maxValue=$value;
$keyValue=$key;
break;
}
}

$resultSearch=array_search_all($maxValue, $array);

return
array_fill_keys($resultSearch, $maxValue);


}

//example
$arreglo=array('e1'=>99,'e2'=>'99','e3'=>1,'e4'=>1,'e5'=>98);

var_dump(array_getMax($arreglo));

//output
/*
array(2) {
["e1"]=>
int(99)
["e2"]=>
int(99)
}
*/
?>

I hope some one find this usefull
up
-2
Hayley Watson
7 years ago
Fill missing keys in a (numerically-indexed) array with a default value

<?php

function fill_missing_keys($array, $default = null, $atleast = 0)
{
return
$array + array_fill(0, max($atleast, max(array_keys($array))), $default);
}

?>
To Top