php - 如何将点符号数组扩展为完整的多维数组

标签 php arrays laravel laravel-5

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

我该怎么做?

最佳答案

在 Laravel 6+ 中你可以使用 Arr::set()为此:

The Arr::set method sets a value within a deeply nested array using "dot" notation:

    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' => [ '价格' => 200]]]。因此您可以遍历数组键以获得多维数组。

关于php - 如何将点符号数组扩展为完整的多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48740866/

相关文章:

php - 无法使用 Ajax 登录 RESTful 服务器

python - python中返回多维列表元素的函数

javascript - Google Geocode API 对大数组的 promise

mysql - Laravel 查询 where 子查询

php - 如何创建具有用户角色的 JWT token (Spatie JWT 网络 token )

javascript - 成功后如何使用ajax在td中显示值和图像

php - 使用 URL 参数值预填充表单输入

c++ - 为什么我不能初始化可变大小的数组?

php - laravel背包用户密码

php - 如何使用唯一的随机序列号更新我的 MySQL 表列?