Меню Закрыть

Php среднее арифметическое элементов массива

Содержание

на самом деле, как найти среднее значение из этого массива, кроме пустых. пожалуйста, помогите решить эту проблему.

3 ответов

сначала вам нужно удалить пустые значения, иначе среднее значение будет неточным.

более краткий и рекомендуемый способ

принятый ответ работает для значений примера, но в целом просто используя array_filter($a) вероятно, это не очень хорошая идея, потому что она отфильтрует любые фактические нулевые значения, а также строки нулевой длины.

даже ‘0’ вычисляет значение false, поэтому следует использовать фильтр, который явно исключает строки нулевой длины.

Я должен вычислить значение массива, взятого из запроса, только если в нем было более одного элемента, иначе я должен вернуть значение элемента, я использую этот код:

И работать, когда есть два или более значения, но возвращать NULL, когда есть только одно значение, почему?

Спасибо всем, кто хочет принять участие.

Решение

Как уже было сказано, чтобы сделать это так, как вы пытаетесь, вам нужно получить доступ к первому элементу вашего массива, как

Тем не менее, ваш метод расчета среднего по-прежнему будет работать для массива с одним элементом. Это просто сработает до х / 1.

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

array_sum — Вычисляет сумму значений массива

Описание

array_sum() возвращает сумму значений массива.

Список параметров

Возвращаемые значения

Возвращает сумму значений в виде целого числа или числа с плавающей точкой; , если array пуст.

Примеры

Пример #1 Пример использования array_sum()

= array( 2 , 4 , 6 , 8 );
echo "sum(a) = " . array_sum ( $a ) . "
" ;

$b = array( "a" => 1.2 , "b" => 2.3 , "c" => 3.4 );
echo "sum(b) = " . array_sum ( $b ) . "
" ;
?>

Результат выполнения данного примера:

Читайте также:  Пропал айфон как найти

User Contributed Notes 9 notes

If you want to find the AVERAGE of the values in your array, use the sum and count functions together. For example, let’s say your array is $foo and you want the average.

= array_sum ( $foo ) / count ( $foo );
?>

If you want to check if there are for example only strings in an array, you can use a combination of array_sum and array_map like this:

function only_strings_in_array ( $arr ) <
return array_sum ( array_map ( ‘is_string’ , $arr )) == count ( $arr );
>

$arr1 = array( ‘one’ , ‘two’ , ‘three’ );
$arr2 = array( ‘foo’ , ‘bar’ , array());
$arr3 = array( ‘foo’ , array(), ‘bar’ );
$arr4 = array(array(), ‘foo’ , ‘bar’ );

var_dump (
only_strings_in_array ( $arr1 ),
only_strings_in_array ( $arr2 ),
only_strings_in_array ( $arr3 ),
only_strings_in_array ( $arr4 )
);
?>

This will give you the following result:
bool(true)
bool(false)
bool(false)
bool(false)

If some array elements arent integers, function will change them to integers (content of array will not change) type and then sum them.

Example:
[] = "12" ;
$foo [] = 10 ;
$foo [] = "bar" ;
$foo [] = "summer" ;
echo array_sum ( $foo ); //same as echo "22";
?>

Microsoft Excel — SUMIF()

Here is how you can multiply two arrays in the form of matrixes using a bit of matrix algebra (M*M).
By calling the function multiplyMatrix, you will be multiplying two sparse matrixes (zeros need not be included in the array for the operation to be performed).

= array(
0 =>array( 1 => 1 , 4 => 1 ),
1 =>array( 2 => 1 , 3 => 1 ),
3 =>array( 1 => 1 ),
4 =>array( 5 => 1 ),
5 =>array( 6 => 1 )
);

$M1 = multiplyMatrix ( $M , $M ); //multiplying $M by itself

Читайте также:  Как быстро открывать вкладки

function multiplyMatrix ( $M1 , $M2 )
<
#Helena F Deus, Oct 06, 2008
##Multiply two matrixes; $M1 and $M2 can be sparse matrixes, the indexes on both should match
if( is_file ( $M1 )) < $matrix1 = unserialize ( file_get_contents ( $M1 ));>
else $matrix1 = $M1 ;

#transpose M2
$M2t = transpose ( $M2 );

foreach ( $M2t as $row => $tmp ) <
##sum the result of the value in the col multiplied by the value in the vector on the corresponding row

foreach ( $M1 as $row1 => $tmp1 ) <

$multiply [ $row1 ] = array_rproduct ( $tmp , $tmp1 );

foreach ( $multiply as $row1 => $vals ) <

$sum [ $row ][ $row1 ]= array_sum ( $vals );
>

$r = transpose ( $sum );

function transpose ( $M )
<
foreach ( $M as $row => $cols ) <

foreach ( $cols as $col => $value ) <
if( $value )
$Mt [ $col ][ $row ]= $value ;
>
>
ksort ( $Mt );

function array_rproduct ( $a1 , $a2 )
<

foreach ( $a1 as $line => $cols ) <
$a3 [ $line ] = $a1 [ $line ]* $a2 [ $line ];
foreach ( $a2 as $line2 => $cols2 ) <
$a3 [ $line2 ] = $a1 [ $line2 ]* $a2 [ $line2 ];
>
>
ksort ( $a3 );

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.