在 PHP 中重命名数组键名的实现(基于函数 array_map)
1、现有的数组结构如下,其键名为小写字母加下划线的形式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | [ [ [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 实现。为数组的每个元素应用回调函数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | [ [ [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 ] ] |
近期评论