背景:最近对接某平台的回调数据,不同账号下回调数据返回的格式有所差别。最明显的是一个账号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);