Arrays 查找多个数组的平均值

Arrays 查找多个数组的平均值,arrays,perl,multidimensional-array,Arrays,Perl,Multidimensional Array,我有: $array->[0]->[0..4]=(1,2,3,4,5) $array->[1]->[0..6]=(12,13,14,15,16,17,18) $array->[2]->[0..8]=(4,5,6,7,8,9,10,11,12) 我想找到每个数组的平均值,结果是: $array->[0]=3 $array->[1]=15 $array->[2]=8 这只是我的数据的一个示例,但我实际上有0到72-510个数组,每个数组包含0到1-40个元素。我当前的脚本设置为变量$I在数组总数中打

我有:

$array->[0]->[0..4]=(1,2,3,4,5)

$array->[1]->[0..6]=(12,13,14,15,16,17,18)

$array->[2]->[0..8]=(4,5,6,7,8,9,10,11,12)

我想找到每个数组的平均值,结果是:

$array->[0]=3

$array->[1]=15

$array->[2]=8

这只是我的数据的一个示例,但我实际上有0到72-510个数组,每个数组包含0到1-40个元素。我当前的脚本设置为变量$I在数组总数中打勾,变量$j在数组元素数中打勾

下面是我脚本的基本设置

my $sum;
my $value;

foreach (my $i = 0; $i < "Number of Arrays"; ++$i) { 
 for (my $j = 0; $j < "Size of Array"; ++$j) { 
     $value = $array->[$i]->[$j];
 }
 $sum += $values;
 my $average = $sum / "Size of Array"; 
}
我的$sum;
我的美元价值;
foreach(my$i=0;$i<“数组数”++$i){
对于(my$j=0;$j<“数组大小”++$j){
$value=$array->[$i]->[$j];
}
$sum+=$value;
my$average=$sum/“数组大小”;
}

如果有人能给我举一个例子,说明如何用这个例子来完成这个任务,那将是非常有帮助的!如果我同时发现了什么,我会更新我的问题

你说得对

您要为每个数组将
$sum
重新初始化为
0
,并将每个
$value
(不是
$value
)添加到
$sum

foreach (my $i = 0; $i < "Number of Arrays"; ++$i) { 
  my $sum = 0;

  for (my $j = 0; $j < "Size of Array"; ++$j) { 
    my $value = $array->[$i]->[$j];
    $sum += $value;
  }

  my $average = $sum / "Size of Array"; 
}
foreach(my$i=0;$i<“数组数”++$i){
我的$sum=0;
对于(my$j=0;$j<“数组大小”++$j){
我的$value=$array->[$i]->[$j];
$sum+=$value;
}
my$average=$sum/“数组大小”;
}

假设您有以下php数组(来自您的示例)

您可以使用以下脚本(我使用长变量使您更容易理解):

将平均值存储在数组$arrayOfAverages中。这是所述阵列的打印:

Array
(
    [first_array] => 3
    [second_array] => 15
    [third_array] => 8
)

对循环使用
List::Util
和无C样式:

use strict;
use warnings;
use List::Util qw(sum);
use feature 'say';

my $array = [
    [1, 2, 3, 4, 5],
    [12, 13, 14, 15, 16, 17, 18],
    [4, 5, 6, 7, 8, 9, 10, 11, 12],
    []
];

foreach my $sub_array (@$array) {
    @$sub_array or next;                       # Is the array empty?
    my $avg = sum(@$sub_array) / @$sub_array;
    say "[@$sub_array] has average $avg";
}
输出:

Array([0] => 3.5
      [1] => 15
      [2] => 8)
守则如下:

    $sum = 0;
    $count = 0;
    foreach ($arrays as $key => $value) {
        foreach ($value as $k => $v) {
            $sum += $v;
            $count++;
        }
        $avg_array[$key] = $sum / $count;
        $sum = 0;
        $count = 0;
    }
    print_r($avg_array);

我希望这能解决您的问题。

问题提到某些数组可能是空的;您需要检查这一点(尽管不清楚结果是否应该是0或undef或其他值)是否正确。我为空数组选择了
unde
(不要打印它们)。
@$sub_数组或next
可能没有那么详细。OP更正了标记-这是一个Perl问题,而不是PHP。
Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 ) 
        [1] => Array ( [0] => 12 [1] => 13 [2] => 14 [3] => 15 [4] => 16 [5] => 17 [6] => 18 ) 
        [2] => Array ( [0] => 4 [1] => 5 [2] => 6 [3] => 7 [4] => 8 [5] => 9 [6] => 10 [7] => 11 [8] => 12 ) )
Array([0] => 3.5
      [1] => 15
      [2] => 8)
    $sum = 0;
    $count = 0;
    foreach ($arrays as $key => $value) {
        foreach ($value as $k => $v) {
            $sum += $v;
            $count++;
        }
        $avg_array[$key] = $sum / $count;
        $sum = 0;
        $count = 0;
    }
    print_r($avg_array);