php[world] in Washington, D.C.

array_fill_keys

(PHP 5 >= 5.2.0)

array_fill_keysLlena un array con valores, especificando las keys

Descripción

array array_fill_keys ( array $keys , mixed $value )

Llena un array con el valor del parámetro value, usando los valores del array keys como claves.

Parámetros

keys

Array con los valores que serán usados como keys. Valores ilegales para una clave serán convertidos a string.

value

Valor usado para el llenado.

Valores devueltos

Retorna la matriz llenada

Ejemplos

Ejemplo #1 Ejemplo de array_fill_keys()

<?php
$keys 
= array('foo'510'bar');
$a array_fill_keys($keys'banana');
print_r($a);
?>

El resultado del ejemplo sería:

Array
(
    [foo] => banana
    [5] => banana
    [10] => banana
    [bar] => banana
)

Ver también

  • array_fill() - Llena un array con valores
  • array_combine() - Crea un nuevo array, usando una matriz para las claves y otra para sus valores

add a note add a note

User Contributed Notes 7 notes

up
10
sergli at nigma dot ru
2 years ago
<?php
$a
= array("1");

var_dump(array_fill_keys($a, "test"));
?>

array(1) {
  [1]=>
  string(4) "test"
}

now string key "1" become an integer value 1, be careful.
up
5
atul dot kr_singh at hotmail dot com
1 year ago
If an associative array is used as the second parameter of array_fill_keys, then the associative array will be appended in all the values of the first array.
e.g.
<?php
$array1
= array(
   
"a" => "first",
   
"b" => "second",
   
"c" => "something",
   
"red"
);

$array2 = array(
   
"a" => "first",
   
"b" => "something",
   
"letsc"
);

print_r(array_fill_keys($array1, $array2));
?>

The output will be
Array(
    [first] => Array(
        [a] => first,
        [b] => something,
        [0] => letsc
    ),
    [second] => Array(
        [a] => first,
        [b] => something,
        [0] => letsc
    ),
    [something] => Array(
        [a] => first,
        [b] => something,
        [0] => letsc
    ),
    [red] => Array(
        [a] => first,
        [b] => something,
        [0] => letsc
    )
)
up
0
taylanaktepe at yahoo dot com
1 month ago
$keys = array(1, 2, 3);

// Fill it with value.
$keys = array_fill_keys($keys, 'banana');
print_r($keys);

// Fill it different value.
$apples = array_fill_keys(array_keys($keys), 'apple');
print_r($apples);

// Output:
Array (
[1] => banana
[2] => banana
[3] => banana
)
Array (
[1] => apple
[2] => apple
[3] => apple
)
up
0
matrebatre
6 years ago
This function does the same as:
<?php
$array
= array_combine($keys,array_fill(0,count($keys),$value));
?>
up
0
phydeaux
6 years ago
Scratchy's version still doesn't work like the definition describes.  Here's one that can take a mixed variable as the second parameter, defaulting to an empty string if it's not specified.  Don't know if this is exactly how the function works in later versions but it's at least a lot closer.

function array_fill_keys($target, $value = '') {
    if(is_array($target)) {
        foreach($target as $key => $val) {
            $filledArray[$val] = is_array($value) ? $value[$key] : $value;
        }
    }
    return $filledArray;
}

This works for either strings or numerics, so if we have

$arr1 = array(0 => 'abc', 1 => 'def');
$arr2 = array(0 => 452, 1 => 128);
$arr3 = array(0 => 'foo', 1 => 'bar');

then

array_fill_keys($arr1,$arr2)
returns: [abc] => 452, [def] => 128

array_fill_keys($arr1,0)
returns: [abc] => 0, [def] => 0

array_fill_keys($arr2,$arr3)
returns: [452] => foo, [128] => bar

array_fill_keys($arr3,'BLAH')
returns: [foo] => BLAH, [bar] => BLAH

and array_fill_keys($arr1)
returns: [abc] =>, [def] =>
up
0
Scratchy
6 years ago
RE: bananasims at hotmail dot com

I also needed a work around to not having a new version of PHP and wanting my own keys. bananasims code doesn't like having an array as the second parameter...

Here's a slightly modified version than can handle 2 arrays as inputs:

//we want these values to be keys
$arr1 = (0 => "abc", 1 => "def");
/we want these values to be values
$arr2 = (0 => 452, 1 => 128);

function array_fill_keys($keyArray, $valueArray) {
    if(is_array($keyArray)) {
        foreach($keyArray as $key => $value) {
            $filledArray[$value] = $valueArray[$key];
        }
    }
    return $filledArray;
}

array_fill_keys($arr1, $arr2);

returns:
abc => 452, def =>128
up
-1
bananasims at hotmail dot com
7 years ago
Some of the versions do not have this function.
I try to write it myself.
You may refer to my script below

function array_fill_keys($array, $values) {
    if(is_array($array)) {
        foreach($array as $key => $value) {
            $arraydisplay[$array[$key]] = $values;
        }
    }
    return $arraydisplay;
}
To Top