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

4
在我的Laravel项目中,我有一个点符号表示的数组,需要将其转换为多维数组。 该数组如下:
$dotNotationArray = ['cart.item1.id' => 15421a4, 
                 'cart.item1.price' => '145',
                 'cart.item2.id' => 14521a1,
                 'cart.item2.price' => '1245'];

如何将它扩展为一个数组,例如:
    'cart' => [
        'item1' => [
            'id' => '15421a4',
            'price' => 145
        ],
        'item2' => [
            'id' => '14521a1',
            'price' => 1245,
        ]
    ]

我该怎么做?

相关 https://stackoverflow.com/questions/45089729/converting-laravel-validation-message-dot-syntax-into-array - mickmackusa
1个回答

7
在 Laravel 6+ 中,您可以使用 Arr::set() 来实现此功能:

Arr::set() 方法使用 "点" 表示法在深度嵌套的数组中设置值:

    use Illuminate\Support\Arr;


    $multiDimensionalArray = [];

    foreach ($dotNotationArray as $key => $value) {
        Arr::set($multiDimensionalArray , $key, $value);
    }

    dump($multiDimensionalArray);


如果您正在使用Laravel 5.x,则可以使用array_set(),它在功能上与Arr::set()相同。
解释: Arr::set()按点表示法格式设置键的值到指定的键,并输出类似于['products' => ['desk' => ['price' => 200]]]的数组。这样,您可以循环遍历您的数组键以获得多维数组。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接