fork download
  1. <?php
  2.  
  3.  
  4. function strtotab($str) {
  5. $result = array();
  6.  
  7. $items = explode(';', $str);
  8.  
  9. foreach ($items as $item) {
  10. $elements = explode(':', $item);
  11. $value = array_pop($elements);
  12.  
  13. $ref = &$result;
  14.  
  15. foreach ($elements as $element) {
  16. if (!isset($ref[$element])) {
  17. $ref[$element] = array();
  18. }
  19.  
  20. $ref = &$ref[$element];
  21. }
  22.  
  23. $ref = $value;
  24. }
  25.  
  26. return $result;
  27. }
  28.  
  29. print_r(strtotab('a:1;b:2;c:a:3;c:b:4;d:a:a:5;d:a:b:6;d:a:c:7;d:b:a:8;d:b:b:9;d:b:c:10;d:c:11;d:d:12;e:a:13;e:b:14'));
Success #stdin #stdout 0.02s 13112KB
stdin
Standard input is empty
stdout
Array
(
    [a] => 1
    [b] => 2
    [c] => Array
        (
            [a] => 3
            [b] => 4
        )

    [d] => Array
        (
            [a] => Array
                (
                    [a] => 5
                    [b] => 6
                    [c] => 7
                )

            [b] => Array
                (
                    [a] => 8
                    [b] => 9
                    [c] => 10
                )

            [c] => 11
            [d] => 12
        )

    [e] => Array
        (
            [a] => 13
            [b] => 14
        )

)