array_fill

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

array_fillFill an array with values

Опис

array array_fill ( int $start_index , int $num , mixed $value )

Fills an array with num entries of the value of the value parameter, keys starting at the start_index parameter.

Параметри

start_index

The first index of the returned array.

If start_index is negative, the first index of the returned array will be start_index and the following indices will start from zero (see example).

num

Number of elements to insert. Must be greater than or equal to zero.

value

Value to use for filling

Значення, що повертаються

Returns the filled array

Помилки/Винятки

Throws a E_WARNING if num is less than zero.

Журнал Змін

Версія Опис
5.6.0 num may now be zero. Previously, num was required to be greater than zero.

Приклади

Приклад #1 array_fill() example

<?php
$a 
array_fill(56'banana');
$b array_fill(-24'pear');
print_r($a);
print_r($b);
?>

Наведений вище приклад виведе:

Array
(
    [5]  => banana
    [6]  => banana
    [7]  => banana
    [8]  => banana
    [9]  => banana
    [10] => banana
)
Array
(
    [-2] => pear
    [0] => pear
    [1] => pear
    [2] => pear
)

Примітки

See also the Arrays section of manual for a detailed explanation of negative keys.

Прогляньте Також

  • array_fill_keys() - Fill an array with values, specifying keys
  • str_repeat() - Repeat a string
  • range() - Створює масив, який містить діапазон елементів

add a note add a note

User Contributed Notes 7 notes

up
72
csst0266 at cs dot uoi dot gr
18 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
37
anatoliy at ukhvanovy dot name
8 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
29
mchljnk at NOSPAM dot gmail dot com
9 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
5
miguelxpain at gmail dot com
10 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
0
user at NOSPAM dot example dot com
1 year 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
-2
Hayley Watson
4 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);
}

?>
up
-28
Anonymous
20 years ago
array_fill() cannot be used to setup only missing keys in an array. This  may be necessary for example before using implode()  on a sparse filled array.
The solution is to use this function:

<?php
function array_setkeys(&$array, $fill = NULL) {
 
$indexmax = -1;
  for (
end($array); $key = key($array); prev($array)) {
    if (
$key > $indexmax)
     
$indexmax = $key;
  }
  for (
$i = 0; $i <= $indexmax; $i++) {
    if (!isset(
$array[$i]))
     
$array[$i] = $fill;
  }
 
ksort($array);
}
?>

This is usefull in some situations where you don't know which key index was filled and you want to preserve the association between a positioned field in an imploded array and the key index when exploding it.
To Top