有没有办法为数组中的每个元素设置一个值?

时间:2017-09-17 13:42:30

标签: php

我可能会想到这个错误,但有没有为PHP数组中的每个键设置静态值的函数?

例如,是否有一个花哨的替代方案:

$staticVal = 1;
$myArray = array('key1'=> $staticVal, 'key2' => $staticVal, 'key3' => $staticVal, 'key4' => $staticVal);

先谢谢你们。

3 个答案:

答案 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中的元素数。这会创建每个索引的数量,因此您将获得key1key2等等,这将通过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
  • array_filter
  • array_walk

关于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'
]
*/