Php 更改多数组的键
有一个数组:Php 更改多数组的键,php,multidimensional-array,Php,Multidimensional Array,有一个数组: $a =array[ "param1"=>[] "param2"=>[] "param3"=>[] ] function def($param){ return $param.date(); } 要返回一个新数组吗 $a =array[ def(param1)=>[] def(param2)=>[] def(param3)=>[]
$a =array[
"param1"=>[]
"param2"=>[]
"param3"=>[]
]
function def($param){
return $param.date();
}
要返回一个新数组吗
$a =array[
def(param1)=>[]
def(param2)=>[]
def(param3)=>[]
]
有人知道怎么做吗?像这样:
$out_array = array_fill_keys(array_map(function($in) {
// do stuff you need
return $out;
}, array_keys($in_array)), array());
你是说像这样的事吗 这是一个相当冗长和肮脏的建议,使用其中一个可能有更好的方法,但下面是:
$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"
}
请注意,使用此方法可能会,也可能会遇到键冲突。当数组包含13和31作为键时会发生什么?