Php массив из набора ключей

Нашел этот пост, который помог мне:Разделить строку, чтобы сформировать ключи многомерного массива?

Во всяком случае, это работает как шарм, когда дело доходит до строковых значений, но если ключи массива содержат целые числа, то они пропускают их.

Вот демо:

у меня есть набор ключей:

Array
(
    [0] => variable_data
    [1] => 0
    [2] => var_type
)

И способ создания вложенного массива

function constructArray( &$array_ptr, $keys, $value )
    {
        // extract the last key
        $last_key = array_pop ( $keys );

        // walk/build the array to the specified key
        while ( $arr_key = strval( array_shift ( $keys ) ) )
        {
            if ( !array_key_exists ( strval($arr_key), $array_ptr ) )
            {
                $array_ptr[ strval($arr_key) ] = array ( );
            }
            $array_ptr = &$array_ptr[ strval($arr_key) ];
        }

        // set the final key
        $array_ptr[ $last_key ] = '$value';
    }

И я использую это таким образом:

$keys = array(
    'variable_data',
    '0',
    'var_type'
);
    $clean_arr = array();
    constructArray($clean_arr, $keys, 'asd');

но вывод выглядит так:

Array
(
    [variable_data] => Array
        (
            [var_desc] => $value
        )

)

Как видите, индекс variable_data не содержит 0 index. Я проверил все, что я мог знать, чтобы работать, но это не так. Кто-нибудь, кто имеет лучшую подсказку?

 Deko26 мая 2012 г., 13:22
лол нашел решение: P
 xdazz26 мая 2012 г., 13:15
Что вы ожидаете?
 Deko26 мая 2012 г., 13:34
аааа всегда задавался вопросом, как это сделать, но есть ограничение по времени при ответе на собственный вопрос: S
 Thom Wiggers26 мая 2012 г., 13:23
Опубликуйте решение как ответ и пометьте ответ как правильный. Не ставьте решение в вопросе.

Ответы на вопрос(1)

Решение Вопроса
Solution

function constructArray( &$array_ptr, $keys, $value )
    {
        // extract the last key
        $last_key = array_pop ( $keys );

        foreach ( $keys as $arr_key )
        {
             unset($keys[$arr_key]);
             if ( !array_key_exists ( strval($arr_key), $array_ptr ) )
            {
                $array_ptr[ strval($arr_key) ] = array ( );
            }
            $array_ptr = &$array_ptr[ strval($arr_key) ];
        }

        // set the final key
        $array_ptr[ $last_key ] = $value;
    }

Использование:

$keys = array('variable_data', '0', 'var_desc');
$clean_arr = array();
constructArray($clean_arr, $keys, 'asd');

// Output
Array
(
    [variable_data] => Array
        (
            [0] => Array
                (
                    [var_desc] => asd
                )

        )

)

Ваш ответ на вопрос