#php #multidimensional-array
#php #многомерный массив
Вопрос:
Иметь массив:
$a =array[
"param1"=>[]
"param2"=>[]
"param3"=>[]
]
function def($param){
return $param.date();
}
хотите вернуть новый массив
$a =array[
def(param1)=>[]
def(param2)=>[]
def(param3)=>[]
]
кто-нибудь знает, как это сделать?
Комментарии:
1. Что произойдет, если ваш массив содержит ключи
13
и31
as?
Ответ №1:
Вы имеете в виду что-то вроде этого?
Это довольно длинное (и грязное) предложение, и, вероятно, есть лучший способ использовать один из методов массивов PHP, но здесь идет:
$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"
}
Обратите внимание, что вы можете и, вероятно, столкнетесь с коллизиями ключей, используя этот метод.
Ответ №2:
Вот так:
$out_array = array_fill_keys(array_map(function($in) {
// do stuff you need
return $out;
}, array_keys($in_array)), array());