изменить ключ мульти-массива - PullRequest
0 голосов
/ 10 мая 2011

Есть массив:

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

хочу вернуть новый массив

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

Кто-нибудь знает, как это сделать?

Ответы [ 2 ]

1 голос
/ 10 мая 2011

Вы имеете в виду что-то подобное?

Это довольно длинное (и грязное) предложение, и, вероятно, есть лучший способ использовать один из методов массива 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"
}

Обратите внимание, что вы можете и, вероятно, столкнетесь с конфликтами клавиш, используя этот метод.

1 голос
/ 10 мая 2011

Вроде так:

$out_array = array_fill_keys(array_map(function($in) {
  // do stuff you need
  return $out;
}, array_keys($in_array)), array());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...