You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何替换特定字符后的字符串 实现指定学生成绩追加更新

PHP 给指定学生追加成绩的实现方案

问题场景

现有存储学生成绩的字符串,格式如下:
student1: A, B, D; student2: A, A, C; student3: F, F, D
需要实现:指定任意学生名、任意待追加成绩,在该学生原有成绩的末尾追加新成绩,最终保持原有字符串格式不变。

实现思路

  • 先按固定分隔符;拆分字符串,得到每个学生独立的「姓名-成绩」条目
  • 遍历拆分后的条目,匹配到目标学生对应的条目
  • 对匹配到的条目,在成绩段末尾拼接新的成绩
  • 将所有处理完成的条目按原有格式重新拼接为完整字符串

可直接复用的代码

<?php
// 原始成绩字符串
$rawScore = 'student1: A, B, D; student2: A, A, C; student3: F, F, D';

/**
 * 给指定学生追加成绩
 * @param string $origin 原始成绩字符串
 * @param string $studentName 目标学生名称,例:student1
 * @param string $newScore 待追加的成绩,例:A
 * @return string 处理完成的成绩字符串
 */
function addStudentScore(string $origin, string $studentName, string $newScore): string
{
    // 拆分所有学生条目,过滤首尾空格、空值
    $itemList = array_filter(array_map('trim', explode(';', $origin)));
    $result = [];
    foreach ($itemList as $item) {
        // 拆分姓名和成绩段
        [$name, $scorePart] = array_map('trim', explode(':', $item));
        // 匹配到目标学生则追加成绩
        if ($name === $studentName) {
            $scorePart = sprintf('%s, %s', $scorePart, $newScore);
        }
        $result[] = sprintf('%s: %s', $name, $scorePart);
    }
    // 拼接回原格式
    return implode('; ', $result);
}

// 调用示例1:给student1追加A
echo addStudentScore($rawScore, 'student1', 'A');
// 输出:student1: A, B, D, A; student2: A, A, C; student3: F, F, D

// 调用示例2:给student3追加C
echo addStudentScore($rawScore, 'student3', 'C');
// 输出:student1: A, B, D; student2: A, A, C; student3: F, F, D, C

扩展说明

  • 如果需要避免重复追加相同成绩,可以在追加前把成绩段按, 拆分为数组,判断新成绩不存在时再执行拼接
  • 如果传入的目标学生名不存在,函数会原样返回原始字符串,不会产生异常格式数据

内容的提问来源于stack exchange,提问作者heloboy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 17:15:43