2013-02-20 226 views
0

我试图将分母变量传递给函数convert。当我这样做时,返回的数组“$ new_arr”为每个值产生“0”。函数返回空数组

我已经尝试用函数内的数字替换变量$分母,新数组返回相应的数字。

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

1)这是作用域的问题?我认为通过将这些变量声明在函数之外,它们本身就是全局的。

2)我是否需要通过'$分母'作为参数?

在此先感谢。这是代码。

$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); 

回答

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数组,如果您遵循全局范围路径

+0

太棒了,谢谢!我不能接受它作为答案,但我肯定会在10分钟后。如果我忘记了,只是下午我大声笑。 – spm 2013-02-20 09:06:11

+0

Cheeers,很高兴帮助 – 2013-02-20 09:21:29

0

是的,您需要将值作为参数传入函数。

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

$test_arr = convert($open_array, $highest_val, $lowest_val, $denominator); 
var_dump($test_arr); 
+0

感谢您的答案!我很感激这么晚的投入。 – spm 2013-02-20 09:06:39