
本文介绍如何对 PHP 数组中的每个字符串元素,按逗号(,)分割并仅保留其前半部分(即逗号之前的内容),适用于清洗时间戳、标签、复合字段等场景。
本文介绍如何对 php 数组中的每个字符串元素,按逗号(`,`)分割并仅保留其前半部分(即逗号之前的内容),适用于清洗时间戳、标签、复合字段等场景。
在实际开发中,我们常遇到类似 ["18-08-2022, 05:08:23pm", "18-08-2022, 05:09:05pm"] 这样的数组——每个元素是日期与时间用英文逗号拼接的字符串。若只需提取日期部分(逗号前内容),直接使用 substr() 或 explode() 配合数组遍历即可高效完成,无需复杂正则。
✅ 推荐方案:array_map() + explode()
这是最简洁、可读性高且性能良好的方式:
<?php $Etime = ["18-08-2022, 05:08:23pm", "18-08-2022, 05:09:05pm"];
// 对每个元素按逗号分割,取第0项(逗号前)
$dates = array_map(function($item) {
$parts = explode(',', $item);
return trim($parts[0]); // trim() 去除可能的空格(如 ", 05:08..." 中的前导空格)
}, $Etime);
print_r($dates);
// 输出:
// Array
// (
// [0] => 18-08-2022
// [1] => 18-08-2022
// )
?>
⚠️ 注意事项
-
explode()返回数组:务必检查$parts[0]是否存在,避免索引越界(尤其当某元素不含,时)。更健壮写法可加判断:$parts = explode(',', $item); $date = !empty($parts[0]) ? trim($parts[0]) : $item; -
空格处理:原始数据中逗号后常带空格(如
", 05:08:23pm"),因此推荐对结果使用trim()。 -
避免
substr($str, ',', true)错误用法:原代码中substr($Etime1[],',',true)是语法错误——substr()第二个参数必须是整数(起始位置),不能传入字符串',';正确替代函数是strstr()(需配合true参数截取前段)或strpos()+substr()组合,但不如explode()直观。
? 若需在数据库查询循环中实时处理(如你的 mysqli_fetch_array 场景)
<?php $Etime = [];
while ($row = mysqli_fetch_array($result)) {
$fullTime = $row["Etime"];
$datePart = explode(',', $fullTime)[0] ?? $fullTime; // 容错:无逗号时保留原值
$Etime[] = trim($datePart);
}
// 输出 JSON 格式供前端使用
echo json_encode($Etime); // 如:["18-08-2022","18-08-2022"]
?>
? 小结:
explode()是处理此类“分隔符截取”任务的标准工具;配合array_map()可函数式地批量转换数组,代码清晰、易于维护。切勿混淆substr()与explode()的用途——前者按位置截取,后者按分隔符拆分。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











