实现一个数组[1,2,3]连续复制3次变为[1,2,3,1,2,3,1,2,3]
算法描述:
如何用PHP语言,实现一个数组[1,2,3]连续复制3次变为[1,2,3,1,2,3,1,2,3],复制n次变成相应的[1,2,3,1,2,3,1,2,3...1,2,3,1,2,3,1,2,3]。
实现思路:
刚开始看到这个算法,满脑子想的就是循环,for和foreach啊什么的,最后的结果是实现失败的。所以就想到先把数组转为字符串,然后把字符串反三倍再变为数组,应该就可以了。
代码实现:
function changeArray($arr, $num)
return array_filter(explode(',', str_repeat(implode(',', $arr) . ',', $num)));
print_r(changeArray($arr, 3));
代码解释:
implode先把数组用逗号分隔变成字符串"1,2,3",后面的要把这个字符串变成想要的倍数,如三倍,这时候就可以用str_repeat函数,如str_repeat("1,2,3".',',3),就可以实现(后面加逗号是为了后面变成数组)。然后就可以用explode把字符串变成数组,但是其中会产生空数组,就可以用array_filter把空数组删除。
注: array_filter:如果没有提供callback函数,将删除array中所有等值为
FALSE
的条目。
最后总结:
PHP内置的很多关于数组的函数很多,每个都有其存在的意义,都会相应的解决工作和学习中遇到的问题。for和foreach不是能解决所有的问题。手册还是很必要的。
欢迎指导!