Задача: Из неизвестного многомерного массива создать одномерный, в котором ключами будут строки вложенности массива. Пример: Из: [ 'w1' => [ ['a'=>[50,100], ['b=>[10,20], ['c'=>[1,5] ] ], 'w2' => 1000, 'w3' => [ 'i' =>40, 'j'=>[50, [ .a.=>10, .b.=>100 ] ] ], ... ]; В: [ 'w1.a.0' => 50, 'w1.a.1' => 100, 'w1.b.0' => 10, 'w1.b.1' => 20, 'w1.c.0' => 1, 'w1.c.1' => 5, 'w2' => 1000, 'w3.i' => 40, 'w3.j.0' => 50, 'w3.j.1.a' => 10, 'w3.j.1.b' => 100, ... ]; Помогите пожалуйста это реализовать, желательно рекурсивной функцией.
Написал сам. PHP: function f($v,$k=null){ $res = []; $key = is_null($k) ? '' : $k.'.'; if(is_array($v)){ foreach($v as $k2=>$v2){ if(is_array($v2)){ $i = f($v2,($key.$k2)); $res = array_merge($res,$i); }else{ $res = array_merge($res,[($key.$k2)=>$v2]); } } }else{ $res = [$key=>$v]; } return $res; } Пример: $arr = [ 'w1' => [ 'a'=>[50,100], 'b'=>[10,20], 'c'=>[1,5] ], 'w2' => 1000, 'w3' => [ 'i' =>40, 'j'=>[50, [ 'a'=>10, 'b'=>100 ] ] ] ]; print_r(f($arr)); Результат: Array ( [w1.a.0] => 50 [w1.a.1] => 100 [w1.b.0] => 10 [w1.b.1] => 20 [w1.c.0] => 1 [w1.c.1] => 5 [w2] => 1000 [w3.i] => 40 [w3.j.0] => 50 [w3.j.1.a] => 10 [w3.j.1.b] => 100 )