0

我正在尝试将分母变量传递给函数转换。当我这样做时,返回的数组“$new_arr”为每个值生成“0”。

我尝试用函数中的数字替换变量 $denominator,新数组返回适当的数字。

我对 PHP 的经验是新手,所以我的问题是:

1)这是范围界定问题吗?我认为通过在函数之外声明这些变量,它们本质上是全局的。

2) 我是否也需要将 '$denominator' 作为参数传递?

提前致谢。这是代码。

$highest_val = max($array_1);
$lowest_val  = min($array_2);
$denominator = $highest_val - $lowest_val;

function convert($arr)
{

$new_arr=array();

for($i=0, $count = count($arr); $i<$count; $i++)
{
$numerator  = $arr[$i]-$lowest_val;     
$calc   = $numerator/$denominator;
$new_arr[] .= $calc;    
}
$arr = $new_arr;
return $arr;        
}

 $test_arr = convert($open_array);
 var_dump($test_arr);
4

2 回答 2

2

要在函数中使用全局变量,您也需要在其中定义它们global。像这样

$highest_val = max($array_1);
$lowest_val  = min($array_2);
$denominator = $highest_val - $lowest_val;
function convert($arr)
{
global $highest_val;
global $lowest_val ;
global $denominator;

或者您可以简单地将这三个值作为参数发送给您的函数。如果遵循全局范围路径,也可以使用 $GLOBALS 数组

于 2013-02-20T09:00:55.847 回答
0

是的,您确实需要将值作为参数传递给函数。

function convert($arr, $highest_val, $lowest_val, $denominator) { ... }

$test_arr = convert($open_array, $highest_val, $lowest_val, $denominator);
var_dump($test_arr);
于 2013-02-20T09:05:21.700 回答