0

分母変数を関数 convert に渡そうとしています。私がそうすると、返された配列「$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;

または、これら 3 つの値をパラメーターとして関数に送信するだけです。グローバル スコープ パスをたどる場合は、$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 に答える