如何在PHP中重构数组以高效提取数据
PHP数组重构:将逗号分隔字符串转换为结构化关联数组
问题描述
现有一个PHP数组,每个元素是包含年份、月份、名称、百分比的逗号分隔字符串,结构如下:
$originalArray = [ '2022, 6, amex_direct, 99.991', '2022, 7, amex_direct, 99.984', '2022, 8, amex_direct, 99.98', '2022, 9, amex_direct, 99.986', '2022, 5, first_data, 99.995', '2022, 6, first_data, 99.995', '2022, 7, first_data, 99.982', '2022, 8, first_data, 99.996', '2022, 9, first_data, 99.995', '2022, 5, integrations, 99.994', '2022, 6, integrations, 99.988', '2022, 7, integrations, 99.882', '2022, 8, integrations, 99.991', '2022, 9, integrations, 99.959', '2022, 9, mastercard_direct, 100.0', '2022, 5, moneris, 99.99', '2022, 6, moneris, 99.985', '2022, 7, moneris, 99.997', '2022, 8, moneris, 99.97', '2022, 9, moneris, 99.993' ];
需要将其重构为每个元素是包含year、month、name、percent键的关联数组,方便后续数据提取,目标结构示例:
$refactoredArray = [ [ 'year' => 2022, 'month' => 6, 'name' => 'amex_direct', 'percent' => 99.991 ], [ 'year' => 2022, 'month' => 7, 'name' => 'amex_direct', 'percent' => 99.984 ], // ... 其余元素 ];
解决方案
可以使用array_map结合字符串分割与类型转换实现快速重构:
$refactoredArray = array_map(function($item) { // 分割字符串并去除每个字段的前后空格 $fields = array_map('trim', explode(',', $item)); // 组装结构化数组,同时转换数据类型 return [ 'year' => (int)$fields[0], 'month' => (int)$fields[1], 'name' => $fields[2], 'percent' => (float)$fields[3] ]; }, $originalArray);
代码说明
explode(',', $item):将每个逗号分隔的字符串拆分为数组array_map('trim', ...):去除每个字段的前后空格,避免空格干扰数据提取- 类型转换:将年份、月份转为整数,百分比转为浮点数,确保数据类型符合业务需求
array_map:遍历原数组的所有元素,批量完成转换
内容的提问来源于stack exchange,提问作者Michael Peterson
相关产品推荐
相关产品推荐

