没有不值得去解决的问题,也没有不值得去学习的技术!

在 PHP 中重命名数组键名的实现(基于函数 array_map)

转换后的数组结构如下,其键名为驼峰形式

作者:

, ,
1、现有的数组结构如下,其键名为小写字母加下划线的形式。


[
	[
		[id] => 97
		[theme_id] => vogue
		[version] => 
		[asset_key] => assets\iconfont\iconfont.css
		[mime_type] => text/plain
		[category] => unknown
		[schema] => 
		[created_at] => 2022-01-20 10:05:24
		[updated_at] => 2022-01-20 10:05:24
	]
	[
		[id] => 98
		[theme_id] => vogue
		[version] => 
		[asset_key] => assets\iconfont\iconfont.js
		[mime_type] => text/plain
		[category] => unknown
		[schema] => 
		[created_at] => 2022-01-20 10:05:24
		[updated_at] => 2022-01-20 10:05:24
	]
]


2、期望将数组键名调整为驼峰的形式,传统的方式就是基于 foreach 遍历,生成一个新的键名为驼峰形式的数组。这一次计划基于函数 array_map 实现。为数组的每个元素应用回调函数。


    public function __invoke($rootValue, array $args, GraphQLContext $context, ResolveInfo $resolveInfo)
    {
        $themeId = $rootValue['themeAssets']['theme_id'];

        $themeAssets = ThemeAsset::where('theme_id', $themeId)->get()->toArray();

        $func = function($themeAsset) {
            return [
                'id' => $themeAsset['id'],
                'themeId' => $themeAsset['theme_id'],
                'version' => $themeAsset['version'],
                'content' => $themeAsset['content'],
                'key' => str_replace("\\", "/", $themeAsset['asset_key']),
                'mimeType' => $themeAsset['mime_type'],
                'category' => $themeAsset['category'],
                'schema' => $themeAsset['schema'],
                'createdAt' => $themeAsset['created_at'],
                'updatedAt' => $themeAsset['updated_at'],
            ];
        };

        $themeAssets = array_map($func, $themeAssets);

        return $themeAssets;
    }


3、转换后的数组结构如下,其键名为驼峰形式。如图1
转换后的数组结构如下,其键名为驼峰形式
图1


[
	[
		[id] => 97
		[themeId] => vogue
		[version] => 
		[key] => assets\iconfont\iconfont.css
		[mimeType] => text/plain
		[category] => unknown
		[schema] => 
		[createdAt] => 2022-01-20 10:05:24
		[updatedAt] => 2022-01-20 10:05:24
	]
	[
		[id] => 98
		[themeId] => vogue
		[version] => 
		[key] => assets\iconfont\iconfont.js
		[mimeType] => text/plain
		[category] => unknown
		[schema] => 
		[createdAt] => 2022-01-20 10:05:24
		[updatedAt] => 2022-01-20 10:05:24
	]
]


需要长期技术维护或远程问题排查?

我是拥有 15+ 年经验的 PHP / Go 后端工程师,长期关注已有系统维护、Bug 修复、性能优化、服务器排查、WordPress 网站维护和小功能迭代。

如果你的项目遇到以下情况,可以先从一次小问题排查开始合作:

  • ✅ PHP / Laravel / Yii2 老项目无人维护
  • ✅ Go / Gin 后端接口需要排查或优化
  • ✅ WordPress 网站访问慢、报错或插件冲突
  • ✅ Nginx / MySQL / Redis / Linux 服务器异常
  • ✅ CDN / Cloudflare / DNS / HTTPS 配置问题
  • ✅ 需要长期远程技术支持或兼职维护

更多介绍请查看:关于我 & 合作

微信:13980074657
邮箱:shuijingwanwq@gmail.com
Telegram:@shuijingwan
GitHub:https://github.com/shuijingwan

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理