PHP: Hypertext Preprocessor (original) (raw)

array_fill

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

array_fill — Fill an array with values

Description

Parameters

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 prior to PHP 8.0.0; as of PHP 8.0.0, negative keys are incremented normally (see example).

count

Number of elements to insert. Must be greater than or equal to zero, and less than or equal to 2147483647.

value

Value to use for filling

Return Values

Returns the filled array

Errors/Exceptions

Throws a ValueError if count is out of range.

Changelog

Version Description
8.0.0 array_fill() now throws a ValueError if count is out of range; previously E_WARNING was raised, and the function returned false.

Examples

Example #1 array_fill() example

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

The above example will output:

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

Example #2 array_fill() example with a negative start index

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

Output of the above example in PHP 8:

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

Output of the above example in PHP 7:

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

Note that index -1 is not present prior to PHP 8.0.0.

Notes

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

See Also

Found A Problem?

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:

This should work for as many dimensions as you want, each time passing to array_fill() (as the 3rd argument) another array_fill() function.

`

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 )

mchljnk at NOSPAM dot gmail dot com

11 years ago

`Using objects with array_fill may cause unexpected results. Consider the following:

array=arrayfill(0,2,newFoo());vardump(array = array_fill(0, 2, new Foo());var_dump(array=arrayfill(0,2,newFoo());vardump(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";vardump(array[0]->bar = "apple";var_dump(array[0]>bar="apple";vardump(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.

`

miguelxpain at gmail dot com

13 years ago

`I made this function named "array_getMax" that returns te maximum value and index, from array:

haystack)returnsallthekeysofthevaluesthatmatchhaystack) returns all the keys of the values that match haystack)returnsallthekeysofthevaluesthatmatchneedle in haystackforeach(haystackforeach (haystackforeach(haystack as k=>k=>k=>v) { if( haystack[haystack[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=>key=>key=>value){ if($maxValue==null){ maxValue=maxValue=maxValue=value; keyValue=keyValue=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);vardump(arraygetMax(arreglo=array('e1'=>99,'e2'=>'99','e3'=>1,'e4'=>1,'e5'=>98);var_dump(array_getMax(arreglo=array(e1=>99,e2=>99,e3=>1,e4=>1,e5=>98);vardump(arraygetMax(arreglo));//output /* array(2) { ["e1"]=> int(99) ["e2"]=> int(99) } */ ?>

I hope some one find this usefull

`

Hayley Watson

7 years ago

`Fill missing keys in a (numerically-indexed) array with a default value

default=null,default = null, default=null,atleast = 0) { return array+arrayfill(0,max(array + array_fill(0, max(array+arrayfill(0,max(atleast, max(array_keys($array))), $default); }?>

`