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

PHP如何将一维字符串数组的每个元素重复N次生成新数组

实现方案

你之前的写法问题在于str_repeat()的作用是将单个字符串拼接为更长的字符串,只会生成单个拼接后的元素,无法生成独立的数组元素,以下是两种稳定可用的实现方式:

1. 基础循环写法(兼容性最好)

直接在循环中逐次插入指定数量的元素,所有PHP版本都支持:

$chars = ["a", "b", "c"];
$repeatTimes = 3;
$result = [];
foreach ($chars as $char) {
    for ($i = 0; $i < $repeatTimes; $i++) {
        $result[] = $char;
    }
}

2. 原生数组函数写法(代码更简洁)

配合array_fill()、array_map()、array_merge()三个原生函数实现,无需嵌套循环:

$chars = ["a", "b", "c"];
$repeatTimes = 3;

// PHP 7.4及以上版本支持箭头函数
$duplicatedChars = array_merge(...array_map(
    fn($char) => array_fill(0, $repeatTimes, $char),
    $chars
));

// 低版本PHP兼容写法
$duplicatedChars = array_merge(...array_map(
    function($char) use ($repeatTimes) {
        return array_fill(0, $repeatTimes, $char);
    },
    $chars
));

代码逻辑说明:

  • array_fill(0, $repeatTimes, $char) 会生成一个长度为$repeatTimes、所有元素都是$char的新数组
  • array_map() 遍历原数组的每个元素,生成对应的重复元素数组,得到二维数组结构:[["a","a","a"], ["b","b","b"], ["c","c","c"]]
  • 用...展开运算符将二维数组的每一项作为参数传给array_merge(),合并为一维数组就得到最终结果

注意:不推荐用str_repeat()配合str_split()的写法,该方法仅支持单字符元素的数组,遇到多字符元素会出现拆分错误,通用性差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:06:02