fork(1) download
  1. <?php
  2.  
  3. $array = array(
  4. 'key1' => array(
  5. 'key11' => array(
  6. 'key111' => 'value111',
  7. 'key112' => 'value112',
  8. 'key113' => 'value113',
  9. 'key114' => array('A','B','C','D'),
  10. ),
  11. 'key12' => array(
  12. 'key121' => 'value121',
  13. 'key122' => 'value122',
  14. 'key123' => 'value123',
  15. 'key124' => array('A','B','C','D'),
  16. ),
  17. ),
  18. 'key2' => array(
  19. 'key21' => array(
  20. 'key211' => 'value111',
  21. 'key212' => 'value112',
  22. 'key213' => 'value113',
  23. 'key214' => array('A','B','C','D'),
  24. ),
  25. ),
  26. );
  27.  
  28. function remap_keys($input, $max_depth, $separator = '/', /* reserved */ $keychain = array(), /* reserved */ &$output = array())
  29. {
  30. foreach ($input as $key => $element)
  31. {
  32. $element_keychain = array_merge($keychain, (array)$key);
  33. if (($max_depth > 1) && is_array($element))
  34. remap_keys($element, $max_depth -1, $separator, $element_keychain, $output);
  35. else
  36. $output[implode($separator, $element_keychain)] = implode(',', (array)$element);
  37. }
  38. return $output;
  39. }
  40.  
  41. print_r(remap_keys($array, 3));
Success #stdin #stdout 0.01s 20520KB
stdin
Standard input is empty
stdout
Array
(
    [key1/key11/key111] => value111
    [key1/key11/key112] => value112
    [key1/key11/key113] => value113
    [key1/key11/key114] => A,B,C,D
    [key1/key12/key121] => value121
    [key1/key12/key122] => value122
    [key1/key12/key123] => value123
    [key1/key12/key124] => A,B,C,D
    [key2/key21/key211] => value111
    [key2/key21/key212] => value112
    [key2/key21/key213] => value113
    [key2/key21/key214] => A,B,C,D
)