array_fill_keys

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

array_fill_keys使用指定的键和值填充数组

说明

array_fill_keys(array $keys, mixed $value): array

使用 value 参数的值作为值,使用 keys 数组的值作为键来填充一个数组。

参数

keys

使用该数组的值作为键。非法值将被转换为字符串

value

填充使用的值。

返回值

返回填充后的数组。

示例

示例 #1 array_fill_keys() 示例

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

以上示例会输出:

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

参见

  • array_fill() - 用给定的值填充数组
  • array_combine() - 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值

添加备注

用户贡献的备注 6 notes

up
67
sergli at nigma dot ru
13 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
31
atul dot kr_singh at hotmail dot com
12 years 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
3
ray.paseur sometimes uses gmail
3 years ago
Get an associative array of zeros for counting letter frequency<?php$ltrs = array_fill_keys( range('a', 'z'), 0 );
up
-2
Scratchy
17 years ago
RE: bananasims at hotmail dot comI 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
-4
bananasims at hotmail dot com
18 years ago
Some of the versions do not have this function.I try to write it myself.You may refer to my script belowfunction array_fill_keys($array, $values) {    if(is_array($array)) {        foreach($array as $key => $value) {            $arraydisplay[$array[$key]] = $values;        }    }    return $arraydisplay;}
up
-4
manavchugh988 at gmail dot com
3 years ago
see array_fill_keys are basically used to make a new array from a pre-existing array in a form that the value of the pre-existing array will now be the key of the new Array .And there value will be same That we had given in the 2nd parameter . Example Below---->>><?php        //pre existing array        $a = array("a","b","c","d","e");        //new array with a single same value         $newArray = array_fill_keys($a, "Testing");        //printing the array         echo "<pre>";        print_r($newArray);        echo "</pre>";?>output;    Array(    [a] => Testing    [b] => Testing    [c] => Testing    [d] => Testing    [e] => Testing)
To Top