添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

实现一个数组[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不是能解决所有的问题。手册还是很必要的。

欢迎指导!