PHP按另一数组值重复数组元素的循环实现咨询
解决PHP数组元素按对应位置数值重复的问题
嘿,你已经摸到门道啦!只需要在你现有的循环外面套一层控制重复次数的循环就行,我给你一步步拆解清楚:
核心思路
我们需要两层循环配合完成需求:
- 外层循环:遍历
$arr1和$arr2的索引(两个数组长度一致,用哪个的长度判断都可以) - 内层循环:根据
$arr1[$i]的数值,重复将$arr2[$i]添加到$arr3中
完整代码实现
$arr1 = array(2,3,4,5); $arr2 = array(1,2,3,4); $arr3 = array(); // 外层循环遍历每一组对应位置的元素 for($i = 0; $i < count($arr1); $i++){ // 内层循环:按照arr1对应位置的数值重复添加元素 for($j = 0; $j < $arr1[$i]; $j++){ array_push($arr3, $arr2[$i]); } } // 打印结果验证 print_r($arr3);
代码细节说明
- 外层循环的
$i从0到count($arr1)-1,确保能遍历到每一对对应位置的元素 - 内层循环的次数由
$arr1[$i]决定:比如当$i=0时,$arr1[0]是2,所以会把$arr2[0](也就是1)添加2次 - 顺便修正了你原来代码里的小疏漏:
$++应该是$i++,不然会触发语法错误哦
运行这段代码后,$arr3就会得到你想要的结果:
Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 2 [4] => 2 [5] => 3 [6] => 3 [7] => 3 [8] => 3 [9] => 4 [10] => 4 [11] => 4 [12] => 4 [13] => 4 [14] => 4 )
可选优化方案
如果担心循环中反复调用count($arr1)影响性能,可以先把数组长度存起来:
$length = count($arr1); for($i = 0; $i < $length; $i++){ // 内层循环逻辑不变 }
内容的提问来源于stack exchange,提问作者Felix Candra
相关产品推荐
相关产品推荐

