Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多个数组中的PHP平均值为1个数组_Php_Arrays_Average - Fatal编程技术网

多个数组中的PHP平均值为1个数组

多个数组中的PHP平均值为1个数组,php,arrays,average,Php,Arrays,Average,我有一个充满数字的数组,我可以很容易地得到一个数组的平均值 if(count($averageprice)) { $averageprice= array_filter($averageprice); $averageprice= array_sum($averageprice)/count($averageprice); } 但假设我有4个阵列,都有价格。它们的顺序都正确,并且包含相同数量的值。如何创建一个保持每个值顺序但在所有数组之间求平均值的数组 谢谢 编辑以获得更好的示例: $arra

我有一个充满数字的数组,我可以很容易地得到一个数组的平均值

if(count($averageprice)) {
$averageprice= array_filter($averageprice);
$averageprice= array_sum($averageprice)/count($averageprice);
}
但假设我有4个阵列,都有价格。它们的顺序都正确,并且包含相同数量的值。如何创建一个保持每个值顺序但在所有数组之间求平均值的数组

谢谢

编辑以获得更好的示例:

$array1 =array(10,15,20);
$array2 =array(14,13,22);
$array3 =array(12,18,26);

我想要一个新数组,将数组中的所有值平均化为一个数组。注意,每次数组的数量并不总是相同的。但是,无论有多少个数组,它们中的值总是相同的。(有时4,有时8等)

第一种方式:不同变量中的数组

$arr0 = [0,10,2];
$arr1 = [0,20,4];
$arr2 = [0,30,6];
注意:数组_筛选器将删除0的。。。例如:平均 [0,10,2]的值为6(即:(10+2)/2),而不是(0+10+2)/3=4。是 这真的是你的意思吗?是否要在求平均值之前放弃0

$arr0 = array_filter($arr0);
$arr1 = array_filter($arr1);
$arr2 = array_filter($arr2);
这是重要的一行:

$averages = array_map(function($a){return array_sum($a)/count($a);}, [$arr0, $arr1, $arr2]);
第二种方式:较大数组中的所有数组

$arrs = [[0,10,2], [0,20,4], [0,30,6]];
$arrs = array_map(function($a){return array_filter($a);}, $arrs);
$result = array_map(function($a){return array_sum($a) / count($a);},  $arrs);

是包含所有项的单个数组,还是包含每个现有数组的平均元素的数组?需要阵列的样本和所需的输出,以及您在使用单个阵列之外所做的尝试。让我们看看一些样本数据和样本数据中的确切所需结果。您当前的代码片段如何让您失望?具有与现有数组的平均值相同的元素的单个数组。我花了几个小时没有去哪里,只能找到如何获得1个阵列的平均值。我添加了更多关于我想弄明白的内容的细节。如果输入数组的数量是可变的,那么我们(志愿者)将无法动态编码静态声明的数组
$array1
$array2
。。。我们可以有一个稳定的起点,比如:
$arrays=[$array1,$array2,…]
?我们可以想象,你可以生成一个单一的输入变量来适应?样本数据的确切期望结果是什么?期望结果是一个数组,其中所有的值1和值2等从所有输入数组中取平均值。有人在下面给出的回答太棒了,我可以继续下去。我知道人们的困惑是从哪里来的。我不想对每个数组本身求平均值,我的意思是在所有数组中求平均值1,在所有数组中求平均值2。因此,最后一个数组value1是所有其他数组value1的平均值,value2是所有其他数组的平均值2。但我想从现在起我已经足够了解了。谢谢哦好。。。我不太明白你需要什么。如果你能设法以一种“更明确”的方式陈述它,也许我可以试着帮助你。。。例如:如果你用所有的数字做一个例子,然后一步一步地进行,在每一步中显示你想要的输出。。。这有助于理解。有很多词汇我不清楚。“对自身进行平均”、“对数组中的值进行平均”;如果你能写一个例子,它将大大简化理解语句的任务;我会尽我最大的努力帮助你。这是一个关于速度跑步的网站。让我们假设一个游戏有4个检查点,这些检查点记录了从上一个检查点到那里的时间。所以我们可能有一个4个值的数组。比如403246548648。现在让我们假设在同一个游戏中有第二个人的速度跑。比如说387230520700。等等新数组将具有这两个数组的平均值,因此第一个值的平均值为403和387,第二个值的平均值为246和230,依此类推。通过这种方式,我们可以在连接到图形的新数组中的每个检查点上获得每个人的平均时间。(图很好)您可以转换您的值矩阵,并使用我在评论中提到的函数进行计算。。。像这样:
$values=[[403246548648],[387230520700]
$values=数组映射(空,…$values)
$result=array_-map(函数($a){返回数组_-sum($a)/count($a);},$value)
$averages = array_map(function($a){return array_sum($a)/count($a);}, [$arr0, $arr1, $arr2]);
print_r($averages)
Array
(
  [0] => 6
  [1] => 12
  [2] => 18
)
$arrs = [[0,10,2], [0,20,4], [0,30,6]];
$arrs = array_map(function($a){return array_filter($a);}, $arrs);
$result = array_map(function($a){return array_sum($a) / count($a);},  $arrs);
print_r($arrs);
Array
(
  [0] => Array
      (
          [1] => 10
          [2] => 2
      )

  [1] => Array
      (
          [1] => 20
          [2] => 4
      )

  [2] => Array
      (
          [1] => 30
          [2] => 6
      )

)
print_r($result);
Array
(
  [0] => 6
  [1] => 12
  [2] => 18
)