PHP 修改多维数组中所有的key值

75 阅读1分钟

背景:最近对接某平台的回调数据,不同账号下回调数据返回的格式有所差别。最明显的是一个账号key值是以驼峰法进行key值的命名,另外一个账号是以下划线进行命名,所以写了一个方法,对驼峰法的命名统一修改成下划线的命名方式

代码如下:

private function modifyArrayKeys($array): array
{
    $modifiedArray = array();
    foreach ($array as $key => $value) {
        // 生成修改后的键
        $modifiedKey = $this->camelToSnake($key);

        if (is_array($value)) {
            // 如果当前值是一个数组,则递归调用自身
            $modifiedArray[$modifiedKey] = $this->modifyArrayKeys($value);
        } else {
            // 否则,直接赋值给修改后的键
            $modifiedArray[$modifiedKey] = $value;
        }
    }
    return $modifiedArray;
}

private function camelToSnake($input) {
    $pattern = '/(?<=[a-z])(?=[A-Z])/';
    $output = preg_replace($pattern, '_', $input);
    return strtolower($output);
}

// 调用:
$result = $this->modifyArrayKeys($info);