更改多阵列的键

时间:2011-05-10 10:46:49

标签: php multidimensional-array

有一个数组:

 $a =array[
      "param1"=>[]
      "param2"=>[]
      "param3"=>[]
      ]
function def($param){
      return $param.date();
}

想要返回一个新数组

  $a =array[
      def(param1)=>[]
      def(param2)=>[]
      def(param3)=>[]
      ]

有人知道怎么做吗?

2 个答案:

答案 0 :(得分:1)

像这样:

$out_array = array_fill_keys(array_map(function($in) {
  // do stuff you need
  return $out;
}, array_keys($in_array)), array());

答案 1 :(得分:1)

你的意思是这样吗?

这是一个非常冗长(和肮脏)的建议,使用PHP's array methods之一可能有更好的方法,但这里有:

$array = array('123' => 'should be 6', '14' => 'should be 5', '12' => 'should be 3');
$new_array = array();
foreach ($array as $key => $val) {
        $key_exp = str_split($key);
        $new_key = 0;
        foreach ($key_exp as $key_int) $new_key += $key_int;
        $new_array[$new_key] = $val;
}

按预期提供此输出:

array(3) {
  [6]=>
  string(11) "should be 6"
  [5]=>
  string(11) "should be 5"
  [3]=>
  string(11) "should be 3"
}

请注意,您可能会,也可能会使用此方法遇到关键冲突。