2016-02-09 5 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, поэтому она должна быть $ 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

Смежные вопросы