在php中,求一個多維異形多維數組常見的方法就是遞歸,如同以下代碼:
- $count=0;$sum=0;
- function avgarr($arr)
- {
- global $sum,$count; //全局變量
- foreach ($arr as $value) { //循環遍歷數組
- if (is_array($value)) {
- avgarr($value); //遞歸
- }
- elseif (is_int($value)) {
- $sum+=$value;
- $count++;
- } //Vevb.com
- }
- return $sum/$count; //返回平均值
- }
開始的時候寫完以上代碼,測試了一個數組,結果OK。竊喜,以為大功告成??墒亲屑氂^察一下呢?這個函數再求出一個數組的平均值后,還可以繼續使用嗎?不可以,因為定義的全局變量已經改變,不能自動重置,用這個函數求完一個數組后就廢掉了,不能繼續使用了。除非每次手動給$sum、$count歸零。那這樣豈不是太費事了? 還有這種方法,看代碼:
- function avgarr2($arr){
- $count=0;$sum=0;
- echo avgarr($arr);
- }
將上面的函數再放到另一個函數內,利用這個函數每次重置$sum和$count。這樣一來,函數就具有通用性了。
新聞熱點
疑難解答