PHP函数补完计划:数组排序 array_reduce()

以前在segmentfault里提了个问题
有个数组,让红框里的键值连续0123456789而不是每次都从新0123,0123
想道用array_merge从新整合可是不知道循环该怎么写php

2c32c533dc0f613f97b428b486402318_article

有位叔给出了一个超级简单的方法,看了下 array_reduce()函数,顿时开朗
请输入图片描述segmentfault

关于 array_reduce()
mixed array_reduce ( array $input , callback $function [, int $initial ] )
它将$input数组分别迭代到自定义回调函数$function中去,若是设定了第一个函数$initial ,则$initial 做为第san个数组处理数组

eg 1

这里php4.3的版本输出的是
Dog-Cat-Horse
而php5之后的版本输出的是
-Dog-Cat-Horse
缘由可能为5.3的版本由于就算没有传第三个参数,也默认把空值传到回调函数中
这样第一次传到my function里的值为“”和Dog函数

eg2

$b输出15,几回传值分别为1+2,3+3,6+4,10+5
$c输出1200,几回传值分别为101,102,203,604,240*5spa

回到最初的问题
请输入图片描述
咱们来看array_reduce()的对第三个参数的官方解释:若是指定了可选参数 initial,该参数将被当成是数组中的第一个值来处理,或者若是数组为空的话就做为最终返回值。
这里的第三个参数设定了个空数组array(),因此它不只做为第一个传入自定义函数merge()的值,也会做为array_reduce()的返回值给咱们想要的结果
以上代码最终的返回值为
array(9) {
[0]=>
int(1)
1=>
int(2)
2=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
[6]=>
int(7)
[7]=>
int(8)
[8]=>
int(9)
}
原文:http://www.imotaku.net/.net

相关文章
相关标签/搜索