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

相關文章
相關標籤/搜索