【问题标题】:How to expand a dot notation array into a full multi-dimensional array如何将点符号数组扩展为完整的多维数组
【发布时间】:2018-07-22 07:00:24
【问题描述】:

在我的 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,
        ]
    ]

我该怎么做?

【问题讨论】:

标签: php arrays laravel laravel-5


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-04
    • 2018-09-23
    • 2016-07-09
    • 2015-07-21
    • 2011-02-03
    • 2020-11-19
    • 2018-08-08
    相关资源
    最近更新 更多