我正在尝试使用函数修改整个关联数组。
这是数组的样子:
数组([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与简单的运算符(如乘法和除法)一起使用,但不适用于指数函数。
这是怎么了?
答案 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);