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

PHP如何对数组内的相邻匹配元素对进行合并分组

原代码问题分析
  • 逻辑和需求完全不匹配:你当前代码的核心逻辑是判断当前元素与下一个元素是否相等,相等则跳过不加入结果,本质是实现连续重复元素的去重,和你需要的「相邻a、b匹配对合并」需求没有关联。
  • 边界判断逻辑错误:代码中$test[$i + 1 !== count($test) ? $i + 1 : 0]的写法,会在遍历到最后一个元素时,将当前元素和数组第一个元素对比,完全不符合相邻元素判断的规则。
修正方案

你需要新增一个临时变量缓存待匹配的前一个元素,遍历过程中判断是否符合「前一个是b、当前是a」的合并规则,符合则拼接后加入结果,不符合就将缓存的前一个元素先加入结果,再更新缓存为当前元素,遍历结束后记得把剩余的缓存元素加入结果。
修正后的代码如下:

$test = [
    'a',
    'b',
    'a',
    'b',
    'a',
    'a',
    'a'
];
$result = [];
// 缓存待匹配的前一个元素
$prev = null;

foreach ($test as $item) {
    // 符合相邻b和a的合并规则
    if ($prev === 'b' && $item === 'a') {
        $result[] = $prev . $item;
        // 合并完成重置缓存
        $prev = null;
    } else {
        // 前一个有值且不符合合并规则,先加入结果
        if ($prev !== null) {
            $result[] = $prev;
        }
        // 更新缓存为当前元素
        $prev = $item;
    }
}

// 遍历结束后处理剩余的缓存元素
if ($prev !== null) {
    $result[] = $prev;
}

dd($result);

运行上述代码得到的输出就是你需要的['a', 'ba', 'ba', 'a', 'a']。

内容的提问来源于stack exchange,提问作者x-ray

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:54:03