PHP 8.6.0 Beta 1 is available for testing

array_fill

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

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

Описание

function 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
84
csst0266 at cs dot uoi dot gr
22 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
47
anatoliy at ukhvanovy dot name
12 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
40
mchljnk at NOSPAM dot gmail dot com
12 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
5 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
0
miguelxpain at gmail dot com
14 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
8 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);
}
?>
+Добавить

AltStyle によって変換されたページ (->オリジナル) /