PHP:具有指数函数的array_map不起作用

时间:2018-10-21 20:39:02

标签: php function array-map exp

我正在尝试使用函数修改整个关联数组。

这是数组的样子:

数组([3] => 11 [1] => 12 [2] => 23 [0] => 34 [4] => 42)

这是函数:

$bfactor = end($fballs) * log(100); 
function bexponential($bn) {    
    return(exp($bfactor / $bn));
}

$fballs = array_map("bexponential", $fballs);

它首先通过将数组的最后一个元素乘以log(100)来计算$ bfactor,然后计算该$ bfactor的指数除以数组的每个元素。

该函数和array_map与简单的运算符(如乘法和除法)一起使用,但不适用于指数函数。

这是怎么了?

1 个答案:

答案 0 :(得分:1)

$bfactor在您的bexponential函数中不可用。

您需要执行以下操作:

$bfactor = end($fballs) * log(100); 

function bexponential($bn) { 
  global $bfactor;   
  return exp($bfactor / $bn);
}

$fballs = array_map("bexponential", $fballs);

或者:

$bfactor = end($fballs) * log(100); 

function bexponential($bn) {    
  return exp($GLOBALS['bfactor'] / $bn);
}

$fballs = array_map("bexponential", $fballs);

或者,如果您在其他任何地方都不需要bexponential函数,请一口气:

$bfactor = end($fballs) * log(100); 

$fballs = array_map(function ($bn) use ($bfactor) {
  return exp($bfactor / $bn);
}, $fballs);