如何将点表示法数组扩展为完整的多维数组

Ron*_*aya 4 php arrays laravel laravel-5

在我的Laravel项目中,我有一个点符号数组,我需要将其转换为多维数组.

数组是这样的:

$dotNotationArray = ['cart.item1.id' => 15421a4, 
                 'cart.item1.price' => '145',
                 'cart.item2.id' => 14521a1,
                 'cart.item2.price' => '1245'];
Run Code Online (Sandbox Code Playgroud)

如何将其扩展为如下数组:

    'cart' => [
        'item1' => [
            'id' => '15421a4',
            'price' => 145
        ],
        'item2' => [
            'id' => '14521a1',
            'price' => 1245,
        ]
    ]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Sap*_*aik 5

你可以使用array_set()这个:

array_set函数使用"点"表示法在深层嵌套数组中设置一个值:

尝试:

    $multiDimensionalArray = [];

    foreach ($dotNotationArray as $key => $value) {
        array_set($multiDimensionalArray , $key, $value);
    }

    dump($multiDimensionalArray);
Run Code Online (Sandbox Code Playgroud)

说明:

array_set()将点符号格式的键的值设置为指定键,并输出类似的数组['products' => ['desk' => ['price' => 200]]].所以你可以遍历你的数组键来获得一个多维数组.