array_fill_keys

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

array_fill_keys使用指定键填充数组

描述

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

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

参数

keys

将用作键的值的数组。键的非法值将被转换为 string

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
)

参见

添加注释

用户贡献的注释 10 条注释

66
sergli at nigma dot ru
12 年前
<?php
$a
= array("1");

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

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

现在字符串键 "1" 变成了整数值 1,小心。
4
ray.paseur sometimes uses gmail
2 年前
获取用于计算字母频率的零关联数组

<?php
$ltrs
= array_fill_keys( range('a', 'z'), 0 );
31
atul dot kr_singh at hotmail dot com
11 年前
如果将关联数组用作 array_fill_keys 的第二个参数,则关联数组将被追加到第一个数组的所有值中。
例如
<?php
$array1
= array(
"a" => "first",
"b" => "second",
"c" => "something",
"red"
);

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

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

输出将是
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
)
)
-2
Scratchy
16 年前
RE: bananasims at hotmail dot com

我还需要一个解决方法,因为没有新版本的 PHP,而且我想要自己的键。bananasims 的代码不喜欢使用数组作为第二个参数...

这是一个略微修改后的版本,可以处理 2 个数组作为输入

//我们希望这些值成为键
$arr1 = (0 => "abc", 1 => "def");
/我们希望这些值成为值
$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);

返回
abc => 452, def =>128
-4
bananasims at hotmail dot com
17 年前
有些版本没有这个函数。
我试着自己写。
你可以参考下面的脚本

function array_fill_keys($array, $values) {
if(is_array($array)) {
foreach($array as $key => $value) {
$arraydisplay[$array[$key]] = $values;
}
}
return $arraydisplay;
}
-9
matrebatre
16 年前
此函数与以下代码作用相同
<?php
$array
= array_combine($keys,array_fill(0,count($keys),$value));
?>
-7
phydeaux
16 年前
Scratchy 的版本仍然无法像定义中描述的那样工作。这里有一个版本可以将混合变量作为第二个参数,如果未指定则默认为空字符串。不知道这是否与以后版本的函数完全相同,但至少要接近得多。

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;
}

这适用于字符串或数字,因此如果我们有

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

那么

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

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

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

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

以及 array_fill_keys($arr1)
返回: [abc] =>, [def] =>
-8
ntd at entidi dot it
8 年前
从关联数组中删除任意键

<?php

function nuke_keys($keys, $array) {
return
array_diff_key($array, array_fill_keys($keys, 0));
}

$array = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
$keys = array('red', 'purple');

print_r(nuke_keys($keys, $array));
?>

上面的代码片段将返回

数组
(
[blue] => 1
[green] => 3
)
-4
manavchugh988 at gmail dot com
2 年前
请参阅 array_fill_keys 用于从预先存在的数组中创建一个新数组,其形式为预先存在的数组的值将成为新数组的键。而它们的值将与我们在第二个参数中给出的值相同。以下示例---->>>

<?php
// 预先存在的数组
$a = array("a","b","c","d","e");

// 新数组,包含单个相同的值

$newArray = array_fill_keys($a, "Testing");

// 打印数组

echo "<pre>";
print_r($newArray);
echo
"</pre>";
?>
输出
数组
(
[a] => Testing
[b] => Testing
[c] => Testing
[d] => Testing
[e] => Testing
)
-21
taylanaktepe at yahoo dot com
10 年前
$keys = array(1, 2, 3);

// 用值填充它。
$keys = array_fill_keys($keys, 'banana');
print_r($keys);

// 用不同的值填充它。
$apples = array_fill_keys(array_keys($keys), 'apple');
print_r($apples);

// 输出
数组 (
[1] => banana
[2] => banana
[3] => banana
)
数组 (
[1] => apple
[2] => apple
[3] => apple
)
To Top