array_fill

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

array_fillBir diziyi değerlerle doldurur

Açıklama

array_fill(int $başlangıç, int $miktar, mixed $dolgu): array

başlangıç değiştirgesi ile belirtilen anahtardan başlayarak miktar sayıda elemana dolgu değerini yerleştirir.

Değiştirgeler

başlangıç

Döndürülecek dizinin ilk indisi. Sadece negatif olmayan indisler desteklenmektedir.

başlangıç negatifse, dönen dizinin ilk indisi başlangıç olacak sonrakiler ise sıfırdan başlayacaktır. (örneğe bakın).

miktar

Diziye yerleştirilecek eleman sayısı. Sıfır ya da sıfırdan büyük olmalıdır.

dolgu

Dolgu için kullanılacak değer.

Dönen Değerler

Doldurulmuş diziyi döndürür.

Hatalar/İstisnalar

miktar olarak sıfırdan küçük bir değer belirtilirse bir E_WARNING yavrulanır.

Örnekler

Örnek 1 - array_fill() örneği

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

Yukarıdaki örneğin çıktısı:

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

Notlar

Negatif anahtarlarla ilgili ayrıntılı bilgi edinmek için array bölümüne bakınız.

Ayrıca Bakınız

add a note add a note

User Contributed Notes 6 notes

up
67
csst0266 at cs dot uoi dot gr
19 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
33
anatoliy at ukhvanovy dot name
9 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
27
mchljnk at NOSPAM dot gmail dot com
10 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
6
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);
}

?>
up
-28
Anonymous
21 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