PHP中如何根据另一数组对应元素值重复数组元素并拼接?
解决PHP数组元素按对应数组指定次数重复的问题
你的需求是将数组$a的每个元素,按照数组$b对应位置的数值重复指定次数,最终拼接成连续字符串。原代码存在几个问题导致输出不符合预期:
- 未关联两个数组的对应元素:原代码只遍历了
$b,没有获取$a中需要重复的目标值,反而输出了循环变量$i,逻辑完全偏离需求。 - 错误使用
print_r:print_r()函数会直接输出参数内容,同时返回布尔值true(转换为字符串是"1"),所以echo print_r($i).'<br>'会先输出$i,再输出1和换行符,这就是你看到11、21这类输出的原因。 - 多余的换行符:代码中添加了
<br>,导致输出被换行分割,无法得到连续的目标字符串。
方法一:使用索引遍历 + str_repeat函数
str_repeat是PHP内置的字符串重复函数,可以直接将指定字符串重复指定次数,简洁高效:
<?php $a = array(1, 2, 3); $b = array(3, 2, 5); $result = ''; // 遍历数组索引,同时获取$a和$b对应位置的元素 for ($i = 0; $i < count($a); $i++) { // 将$a的元素转为字符串,重复$b指定的次数后拼接到结果 $result .= str_repeat((string)$a[$i], $b[$i]); } echo $result; // 输出:1112233333 ?>
方法二:遍历$a并通过索引获取$b的次数
如果习惯用foreach遍历,也可以通过元素索引关联两个数组:
<?php $a = array(1, 2, 3); $b = array(3, 2, 5); $result = ''; foreach ($a as $index => $value) { $result .= str_repeat((string)$value, $b[$index]); } echo $result; // 输出:1112233333 ?>
内容的提问来源于stack exchange,提问作者Modbus
相关产品推荐
相关产品推荐

