Joachim Vanthuyne
Joachim Vanthuyne

Reputation: 355

PHP Puttin values of array into multidimensional array

Hello I want to put values of single array into a multidimensional array with each value on a n+1 This is my array $structures

Array
(
    [0] => S
    [1] => S.1
    [2] => S-VLA-S
    [3] => SB
    [4] => SB50
)

What I want for output is this

Array
(
[S] => Array(
    [S.1] => Array (
        [S-VLA-S] => Array (
            [SB] => Array (
                [SB50] => Array(
                    'more_attributes' => true
                )
            )
        )
    )
)
)

This is what I have tried so far

$structures = explode("\\", $row['structuurCode']);

foreach($structures as $index => $structure) {
    $result[$structure][$structure[$index+1]] = $row['structuurCode'];
}

The values of the array is a tree structure that's why it would be handy to have them in an multidimensional array

Thanks in advance.

Upvotes: 2

Views: 66

Answers (2)

Tomasz Ferfecki
Tomasz Ferfecki

Reputation: 1263

Slightly different approach:

    $var = array('a','an','asd','asdf');
    $var2 = array_reverse($var);
    $result = array('more_attributes' => true);
    $temp = array();
    foreach ($var2 as $val) {
        $temp[$val] = $result;
        $result = $temp;
        $temp = array();
    }

Upvotes: 1

deceze
deceze

Reputation: 522005

It becomes pretty trivial once you start turning it inside out and "wrap" the inner array into successive outer arrays:

$result = array_reduce(array_reverse($structures), function ($result, $key) {
    return [$key => $result];
}, ['more_attributes' => true]);

Obviously a more complex solution would be needed if you needed to set multiple paths on the same result array, but this is the simplest solution for a single path.

Upvotes: 6

Related Questions