Php 使用array_reduce从数组中查找平均数
我有一个由人名和身高组成的数组。我需要使用函数Php 使用array_reduce从数组中查找平均数,php,arrays,function,Php,Arrays,Function,我有一个由人名和身高组成的数组。我需要使用函数array\u reduce找到平均高度,该函数被包装在分配给变量的函数中。下面是到目前为止我编写的代码。在我将数组传递给array\u reduce函数之前,一切似乎都正常工作,然后该函数被置空。我试图用代码中的注释来解释它。为什么数组突然被删除?我如何将其传递给最内部的函数 $people = [ ['name'=> 'John' , 'height'=> 1.65], ['name'=> 'Peter' , 'hei
array\u reduce
找到平均高度,该函数被包装在分配给变量的函数中。下面是到目前为止我编写的代码。在我将数组传递给array\u reduce
函数之前,一切似乎都正常工作,然后该函数被置空。我试图用代码中的注释来解释它。为什么数组突然被删除?我如何将其传递给最内部的函数
$people = [
['name'=> 'John' , 'height'=> 1.65],
['name'=> 'Peter' , 'height'=> 1.85],
['name'=> 'Silvia', 'height'=> 1.69],
['name'=> 'Martin', 'height'=> 1.82]
];
$filter = function ($people)
{
$averageHeight = 0;
$count = count($people);
echo $count;
//if I var_dump($people) - the array $people is FINE.
return array_reduce(
$people,
function ($people) use (&$averageHeight, &$count)
{
$averageHeight += $people['height'] / $count;
return $averageHeight;
//var_dump($people); - var people is NULL. Where did it go?
}
);
};
print_r($filter($people));
这就是使用
array\u reduce
获得平均值的方法:
function array_average($array) {
$carry = null;
$count = count($array);
return array_reduce($array, function ($carried, $value) use ($count) {
return ($carried===null?0:$carried) + $value/$count;
},$carry);
}
该函数将使用累加器和值作为参数,并应返回要传送到下一个元素的值
您可以将其用作:
$averageheight = array_average(array_column($people,"height"));
这导致:
1.7525
下面是一个例子:
如果您需要将这整件事作为可调用项,请执行以下操作:
function array_average($array) {
$carry = null;
$count = count($array);
return array_reduce($array, function ($carried, $value) use ($count) {
return ($carried===null?0:$carried) + $value/$count;
},$carry);
}
$filter = function ($people) {
return array_average(array_column($people,"height"));
};
print_r($filter($people));
这就是如何使用
array\u reduce
获得平均值的方法:
function array_average($array) {
$carry = null;
$count = count($array);
return array_reduce($array, function ($carried, $value) use ($count) {
return ($carried===null?0:$carried) + $value/$count;
},$carry);
}
该函数将使用累加器和值作为参数,并应返回要传送到下一个元素的值
您可以将其用作:
$averageheight = array_average(array_column($people,"height"));
这导致:
1.7525
下面是一个例子:
如果您需要将这整件事作为可调用项,请执行以下操作:
function array_average($array) {
$carry = null;
$count = count($array);
return array_reduce($array, function ($carried, $value) use ($count) {
return ($carried===null?0:$carried) + $value/$count;
},$carry);
}
$filter = function ($people) {
return array_average(array_column($people,"height"));
};
print_r($filter($people));
使用这段代码,我们在sum函数中没有找到数组总数,因此,我将在print\u r()函数中使用这段代码。
使用这段代码,我们在sum函数中没有找到数组总数,因此,我将在print\u r()函数中使用这段代码。
之所以$people
为空,是因为它是您命名people的第一个函数参数,而不是您上面声明的实际数组。PHP将此参数称为$carry
,它是带进位的值。如果不提供默认进位值,它将以null开头。计算平均高度的另一种方法是:$averageHeight=array\u sum(array\u column($people,'height'))/count($people)
之所以$people
为空,是因为它是您命名people的第一个函数参数,而不是您上面声明的实际数组。PHP将此参数称为$carry
,它是带进位的值。如果不提供默认进位值,它将以null开头。计算平均高度的另一种方法是:$averageHeight=array\u sum(array\u column($people,'height'))/count($people)代码>好的,这很有效,但我需要将函数分配给一个变量。我试着这样打印($filter(数组平均值)(数组列($people,“height”)))代码>但我得到了解析错误:语法错误,意外的“print_r”(T_STRING)
@pidari更新。你也可以在变量中声明函数,但它是一个非常通用的函数,所以你可以在其他地方找到它的用法。好的,这很有效,很好,但是我需要将函数分配给一个变量。我试着这样打印($filter(数组平均值)(数组列($people,“height”)))代码>但我得到了解析错误:语法错误,意外的“print_r”(T_STRING)
@pidari更新。您也可以在变量中声明函数,但它是一个非常通用的函数,因此您也可以在其他地方找到它的用途。