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

PHP中如何将数组多个元素值合并为单个元素?

嘿,完全懂你要做的事儿!你是想把数组里的所有元素按顺序拼合成一个数字,然后把结果整合到原数组的第一个位置(或者直接生成只包含这个结果的数组),针对二维数组的话,就是每个子数组都执行这个操作对吧?下面给你详细拆解两种实现方式:

用foreach实现的详细步骤(以PHP为例)

不管是一维还是二维数组,foreach的核心逻辑都是遍历每个元素,把它们逐个拼接到一起。

一维数组的处理

假设你的一维数组是这样的:

$arr = [1, 9, 9, 5];

用foreach实现的代码如下:

// 初始化一个空字符串,用来存放拼接后的内容
$combinedStr = '';

// 遍历数组的每一个元素
foreach ($arr as $num) {
    // 把当前数字转成字符串,拼接到$combinedStr后面
    $combinedStr .= (string)$num;
}

// 把拼接好的字符串转成整数,替换原数组的第一个元素
$arr[0] = (int)$combinedStr;

// 如果需要去掉原数组的其他元素,只保留拼接后的结果
$arr = array_slice($arr, 0, 1);

// 现在$arr就是 [1995]

foreach的运作原理

foreach会自动遍历数组的每一个元素:

  • 每次循环时,当前元素的值会被赋给$num变量
  • 我们在循环体内把$num转成字符串,拼接到$combinedStr上
  • 循环结束后,$combinedStr就变成了"1995",转成整数就是你要的结果

二维数组的处理

如果是包含数百个子数组的二维数组,只需要嵌套一层foreach就行:

$twoDArr = [
    [1,9,9,5],
    [2,3,4],
    [5,6,7,8,9]
];

// 遍历二维数组的每个子数组,注意这里用了引用&,这样修改$subArr会直接改变原二维数组的内容
foreach ($twoDArr as &$subArr) {
    $combinedStr = '';
    // 遍历当前子数组的每个元素
    foreach ($subArr as $num) {
        $combinedStr .= (string)$num;
    }
    // 把当前子数组替换成只包含拼接后数字的新数组
    $subArr = [(int)$combinedStr];
}
// 记得解除引用,避免后续代码意外修改数组
unset($subArr);

// 处理后$twoDArr就是 [[1995], [234], [56789]]
更简洁的内置函数方案

其实PHP有现成的implode()函数,能直接把数组元素拼接成字符串,比手动写foreach更高效简洁:

一维数组的简化写法

$arr = [1,9,9,5];
// implode用空字符串分隔,直接把数组元素拼成"1995",再转成整数
$combinedNum = (int)implode('', $arr);
$arr = [$combinedNum];

二维数组的简化写法

结合array_map()函数,批量处理所有子数组:

$twoDArr = array_map(function($subArr) {
    return [(int)implode('', $subArr)];
}, $twoDArr);

implode()的作用就是把数组里的元素(自动转成字符串)用指定的分隔符(这里是空字符串)连接起来,一步到位完成拼接操作,内置函数的性能通常比手动循环更好,尤其是处理数百个元素的数组时。

注意事项
  • 如果数组里存在非数字元素(比如字符串、null),implode()会直接拼接,但转成整数时可能出现意外结果,建议先过滤数组里的非数字元素
  • 如果拼接后的数字长度很长(比如几百位),会超过PHP的整数范围,这时候建议保留成字符串,不要转成整数

内容的提问来源于stack exchange,提问作者Marius Nestabdau Narbutaitis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:14:21