我有一个数组,其中有一些嵌套的数组,我想把所有的键转换成蛇形的情况.我正在try 这样做:

$data = collect($array)->keyBy(function ($value, $key) {
    return Str::snake($key);            
})->toArray();
        
return $data;

它工作得很好,但只适用于父数组,嵌套数组保持相同的键:

[
    "some_key" => "value",
    "some_key" => [
        "someKey" => "value",
        "someKey" => [
            "someKey" => "value"
        ]
    ]
]

我能做什么?谢谢.

推荐答案

您可以使用辅助对象dotset执行以下操作:

$flat = Arr::dot($array);
$newArray = [];
foreach ($flat as $key => $value) {
     // You might be able to just use Str::snake($key) here. I haven't checked
    $newKey = collect(explode('.', $key))->map(fn ($part) => Str::snake($part))->join('.');
    Arr::set($newArray, $newKey, $value);
}

Php相关问答推荐

我的docker—compose lamp stack在软件更新后不工作:Containerconfig错误'''

有条件的运费率基于购物车小计与WooPayments货币转换

显示WooCommerce当前产品类别或标签的短代码

使用.htaccess将任何路由重定向到文件

获取要删除的图像的公共ID

WooCommerce HPOS管理订单列表中带有订单元数据的定制列

使用php创建表格和插入数据

在PHP中,如何将介于0和1之间(包括0和1)的浮点概率转换为数组索引?

添加并显示单价字段到WooCommerce产品变化

如何在php网站代码中清理浏览器缓存

PHP根据特定索引值从中删除子数组

Laravel服务Provider 没有向服务类注入价值

PHP Match如何准确判断条件?

如何批量处理消息总线中的消息

使用 Composer 找不到 Google APIClient 类

尽管有use指令,PHP 类在其他文件中仍处于可见状态

在这个 Laravel 应用中,如何仅显示已批准的 comments 回复?

来自 GoDaddy 的邮箱在 Gmail 中显示为via

遇到特定键时修改二维数组以创建嵌套数据集

图像不会显示在生产中的 Laravel 应用程序中