【发布时间】:2013-12-09 17:05:49
【问题描述】:
我正在尝试使用 PHP 执行标准偏差。
我使用了我创建的这个函数there,因为stats_standard_deviation doesn't seem to be reliable
<?php
class TestController extends \BaseController {
function MyFunction() {
$array = array('1','2','3','4');
function sd_square($x, $mean) { return pow($x - $mean,2); }
function sd($array) {
return sqrt(array_sum(array_map("sd_square", $array, array_fill(0,count($array), (array_sum($array) / count($array)) ) ) ) / (count($array)) );
}
} return sd($array)
} ?>
问题是当我尝试使用它时它会返回array_map() expects parameter 1 to be a valid callback, function 'sd_square' not found or invalid function name。
查看这里的一些帖子,我尝试将"sd_square" 更改为"self::sd_square" 或array($this, "sq_square")。
【问题讨论】:
-
请提供完整的上下文。这是在上课吗?两者在同一个?
-
您的代码似乎没有任何问题。这些函数是否位于任何类中。你能发布完整的代码吗?
-
统计扩展默认不与 PHP 绑定。你不是已经安装了吗? php.net/manual/en/stats.installation.php
-
你在上课,所以
sd_square()实际上是TestController::sd_square(),因此你必须将它用作回调,例如:array_map(array('TestController', 'sd_square'), ....)更多示例在PHP docs on callbacks中 -
@Wistar return sd($array) is inside function sd () {} 这是一个错字吗?它应该在那个函数之外。
标签: php callback standard-deviation array-map