array_fill

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

array_fillPreenche um array com valores

Descrição

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

Preenche um array com count elementos com o valor do parâmetro value e chaves começando a partir de start_index.

Parâmetros

start_index

O primeiro índice do array retornado

Se start_index for negativo, o primeiro índice do array retornado será start_index, e os índices seguintes começarão do zero antes do PHP 8.0.0. A partir do PHP 8.0.0, chaves negativas são incrementadas normalmente (veja o exemplo).

count

Número de elementos a inserir. Deve ser maior ou igual a zero, e menor ou igual a 2147483647.

value

Valores a preencher

Valor Retornado

Retorna o array preenchido

Erros/Exceções

Lança um ValueError se count estiver fora do alcance.

Registro de Alterações

Versão Descrição
8.0.0 array_fill() agora lança um ValueError se count estiver fora de alance; anteriormente um E_WARNING era disparado, e a função retornava false.

Exemplos

Exemplo #1 Exemplo da função array_fill()

<?php
$a
= array_fill(5, 6, 'banana');
print_r($a);
?>

O exemplo acima produzirá:

Array
(
    [5]  => banana
    [6]  => banana
    [7]  => banana
    [8]  => banana
    [9]  => banana
    [10] => banana
)

Exemplo #2 Exemplo da array_fill() com um índice de início negativo

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

Saída do exemplo acima no PHP 7:

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

Saída do exemplo acima no PHP 8:

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

Note que o índice -1 não está presente antes do PHP 8.0.0.

Notas

Veja também a seção Arrays do manual para a explicação detalhada de chaves negativas.

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 6 notes

up
81
csst0266 at cs dot uoi dot gr
21 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
11 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 indicesprint_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:<?phpclass 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
4 years ago
As of PHP 8.0 the example code<?php$b = array_fill(-2, 4, 'pear');print_r($b);?>now returnsArray(    [-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<?phpfunction fill_missing_keys($array, $default = null, $atleast = 0){    return $array + array_fill(0, max($atleast, max(array_keys($array))), $default);}?>
To Top