首先将CSV转为关联数组,再结合array_filter、array_map等函数筛选处理,最后用fputcsv导出;示例包括提取列、过滤状态、添加字段等操作,实现高效数据清洗与转换。

在PHP中处理CSV数据时,除了使用 fgetcsv() 逐行读取外,结合PHP的数组函数可以更高效地解析、筛选和操作数据。通过合理运用数组函数,能快速完成数据清洗、格式转换和条件提取等任务。
读取CSV并转换为关联数组
将CSV文件读取为数组结构,便于后续处理。通常第一行为字段名,可将其作为键名生成关联数组。
示例代码:
function csv_to_array($filename, $delimiter = ',') {
$data = [];
if (($handle = fopen($filename, 'r')) !== FALSE) {
$header = fgetcsv($handle, 1000, $delimiter); // 第一行为表头
while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
$data[] = array_combine($header, $row);
}
fclose($handle);
}
return $data;
}
// 使用示例
$users = csv_to_array('users.csv');
使用数组函数筛选和处理数据
导入数据后,可利用PHP内置数组函数进行灵活操作。
动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包
- array_filter():按条件过滤记录。例如筛选年龄大于25的用户。
- array_map():修改每条记录的结构或字段。例如统一转为大写或添加计算字段。
- array_column():提取某一列数据,如获取所有邮箱地址。
// 提取所有用户名
$usernames = array_column($users, 'name');
// 过滤状态为激活的用户
$active_users = array_filter($users, function($user) {
return $user['status'] === 'active';
});
// 添加全名字段
$users_with_fullname = array_map(function($user) {
$user['full_name'] = strtoupper($user['first_name'] . ' ' . $user['last_name']);
return $user;
}, $users);
导出处理后的数组回CSV
将处理后的数组重新写入CSV文件,保持格式一致。
立即学习“PHP免费学习笔记(深入)”;
function array_to_csv($data, $filename) {
$fp = fopen($filename, 'w');
if (!empty($data)) {
// 写入表头
fputcsv($fp, array_keys($data[0]));
// 写入数据行
foreach ($data as $row) {
fputcsv($fp, $row);
}
}
fclose($fp);
}
// 导出激活用户
array_to_csv($active_users, 'active_users.csv');
基本上就这些。通过组合使用 fgetcsv 和数组函数,能简洁高效地完成CSV数据的解析与处理,无需依赖外部库。关键是把数据转化为结构化数组,再用标准函数操作。










