2016-02-09 56 views
0

我必須計算從查詢中得到的數組的值,只有當有多個元素時,否則我必須返回元素的值,I使用此代碼:PHP:如果有多個元素,計算一個數組的平均值

function calculate_average($arr) { 
    if (count($arr) === 1) { 
    $average = $arr; 
    } else { 
    sort($arr); 
    $count = count($arr); //count items in array 
    $sum = array_sum($arr); //sum of numbers in array 
    $median = $sum/$count; //divide sum by count 
    $average = ceil($median); //convert number in excess value 
    } 
    return $average; 
} 

而工作時有兩個或更多的價值,但返回NULL時,只有一個值,爲什麼?

感謝所有想要參與的人。

+0

爲什麼不在一行中做所有事情,如下所示:'return ceil(array_sum($ arr)/ count($ arr));'? –

+0

你是對的,我通常每行都做所有的操作行,所以任何人都可以理解誰在做什麼,你的表情肯定更正確 – andreaem

回答

0

請試試這個:

function calculate_average($arr) { 
    if (count($arr) === 1) { 
    $average = $arr[0]; 
    } else { 
    sort($arr); 
    $count = count($arr); //count items in array 
    $sum = array_sum($arr); //sum of numbers in array 
    $median = $sum/$count; //divide sum by count 
    $average = ceil($median); //convert number in excess value 
    } 
    return $average; 
} 
+0

你實際上是分配數組$ average = $ arr;到變量$平均值,所以它應該是$ average = $ arr [0]; –

+2

並且當然沒有必要對數組進行排序,我想!除非你有相同的具體原因 –

1

正如有人說,做你想要的方式,你需要訪問數組的第一個元素像

$average = $arr[0]; 

然而,您的計算平均值的方法仍然適用於具有一個元素的數組。它只會工作到x/1。

function calculate_average($arr) { 
    $count = count($arr); //count items in array 
    $sum = array_sum($arr); //sum of numbers in array 
    $median = $sum/$count; //divide sum by count 
    $average = ceil($median); //round number 

    return $average; 
} 
+0

這是行不通的,我只有一個項目時得到一個空響應 – andreaem

+0

它適用於我。你運行的是哪個版本的PHP?你可以顯示你正在測試的數據,看看是否有其他奇怪的事情發生?演示:http://sandbox.onlinephpfunctions.com/code/493a562f2dfd585efdf87c38607cd0980d146ce5 – Gary