我可能会想到这个错误,但有没有为PHP数组中的每个键设置静态值的函数?
例如,是否有一个花哨的替代方案:
$staticVal = 1;
$myArray = array('key1'=> $staticVal, 'key2' => $staticVal, 'key3' => $staticVal, 'key4' => $staticVal);
先谢谢你们。
答案 0 :(得分:3)
您可以使用array_fill_keys()
$staticVal = 1;
$keys = array('key1','key2','key3','key4');
$myArray = array_fill_keys($keys, $staticVal);
print '<pre>';
print_r($myArray);
print '</pre>';
答案 1 :(得分:2)
您可以合并array_map()
和range()
来定义密钥,并通过array_combine()
将其设置为数组中的密钥。
array_combine()
组合了两个数组,其中一个成为值,另一个成为结果数组中的索引。 array_map()
将通过在key
创建的每个索引前添加前缀range()
来创建新索引。 range()
创建一个值数组,从1开始,一直到$myArray
中的元素数。这会创建每个索引的数量,因此您将获得key1
,key2
等等,这将通过array_combine()
成为数组中的键。
这忽略了键的任何先前值,并且与原始数组中的元素数量无关。
$staticVal = 1;
$myArray = array($staticVal, $staticVal, $staticVal, $staticVal);
$myArray = array_combine(array_map(function ($k) {
return 'key'.$k;
}, range(1, count($myArray))),
$myArray);
print_r($myArray);
输出:
Array (
[key1] => 1
[key2] => 1
[key3] => 1
[key4] => 1
)
答案 2 :(得分:0)
您可以使用3种功能:(不仅具有静态值)
关于array_map
<?php
$some_other_value = 'any value';
$tmp_arr = range(1, 5);
array_map(function($value) {
return $some_other_value;
}, $tmp_arr);
// result
/*
[
1 => 'any value',
2 => 'any value',
3 => 'any value',
4 => 'any value',
5 => 'any value'
]
*/