PHP 8.4.2 Released!

array_fill

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

array_fillFüllt ein Array mit Werten

Beschreibung

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

array_fill() füllt ein Array mit count Einträgen mit dem Wert des Parameters value. Die Indizes des Arrays beginnen mit dem Parameter start_index.

Parameter-Liste

start_index

Der erste Index des zurückgegebenen Arrays.

Wenn start_index negativ ist, ist der erste Index des zurückgebenen Arrays start_index und die folgenden Indizes beginnen vor PHP 8.0.0 bei Null; seit PHP 8.0.0 werden negative Indizes normal hochgezählt (siehe Beispiel).

count

Anzahl der einzufügenden Elemente. Muss größer oder gleich 0 und kleiner oder gleich 2147483647 sein.

value

Einzufügender Wert

Rückgabewerte

Gibt das gefüllte Array zurück

Fehler/Exceptions

Wenn count außerhalb des zulässigen Bereichs liegt, wird ein ValueError ausgelöst.

Changelog

Version Beschreibung
8.0.0 Wenn count außerhalb des zulässigen Bereichs liegt, löst array_fill() nun einen ValueError aus; zuvor wurde ein Fehler der Stufe E_WARNING erzeugt, und die Funktion gab false zurück.

Beispiele

Beispiel #1 array_fill()-Beispiel

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

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

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

Beispiel #2 array_fill()-Beispiel mit einem negativen Startindex

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

Das oben gezeigte Beispiel erzeugt mit PHP 7 folgende Ausgabe:

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

Das oben gezeigte Beispiel erzeugt mit PHP 8 folgende Ausgabe:

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

Es ist zu beachten, dass es den Index -1 vor PHP 8.0.0 nicht gibt.

Anmerkungen

Für eine detaillierte Erklärung von negativen Schlüsseln siehe auch den Abschnitt Arrays des Handbuchs.

Siehe auch

  • array_fill_keys() - Befüllt ein Array mit Werten mit den übergebenen Schlüsseln
  • str_repeat() - Wiederholt einen String
  • range() - Erstellt ein Array mit einem Bereich von Elementen

add a note

User Contributed Notes 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
12 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
6 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