0

私には解決しなければならないねじれがあります。

私は一種のようなフォームで作業しています

<form action="<?php $_SERVER['PHP_SELF'];?>" method="get">
        <h1>Score</h1>
        <p>Uno
        <input type="number" size="10" name="First" value="{$First}"/>
        </p>

        <p>Dos
        <input type="number" size="10" name="Second" value="{$Second}"/>
        </p>

        <p>Tres
        <input type="number" size="10" name="Third" value="{$Third}"/>
        </p>

        <p>Quattro
        <input type="number" size="10" name="Fourth" value="{$Fourth}"/>
        </p>

        <button type="submit">Hit to submit your inputs</button>
    </form>

また、次のようなこれらの入力を取得するための php コードもあります。

$First = $_GET['First'];
$Second = $_GET['Second']; 
$Third = $_GET['Third'];
$Fourth = $_GET['Fourth'];

そして、単純な方法で作成されたこれらの入力を印刷します

echo $First, $Second, $Third, $Fourth;

当面の問題は、最初にこれら 4 つの変数に基づいて計算を実行し、それらを操作した後に結果を出力する必要があることです。

これを行う関数を作成しました

function calculateIt(){
$overall = $first+$second+$third+$fourth/2;
return $overall;
}

次に、関数を呼び出します

$call = calculateIt();

しかし、この呼び出しをエコーすると、0 が返されます。つまり、$_GET が結果を十分長く保存していないのではないでしょうか?

4

2 に答える 2

1

関数内の変数はその関数内でのみスコープを持つため、これらの変数の値を渡すにはパラメーターが必要です。つまり、関数内の変数は、使用しない限り、その関数内でのみ使用できますglobal。悪い習慣として、パラメータを持ち、次のような値を渡します

function calculateIt($first, $second, $third, $fourth){
   $overall = $first+$second+$third+$fourth/2;
   return $overall;
}

したがって、呼び出すときは、次のように値を渡す必要があります

calculateIt(2, 5, 6, 8); //You can replace digits with local variables having numeric values

変数のスコープを学ぶ

サイドノート:issetこれらのインデックスが設定されているかどうかを確認するために使用し、設定されていない場合はユーザーにエラーをスローします

于 2013-05-05T18:58:34.607 に答える
0

関数はいくつかの値 ($first、$second ...) の計算値を返しますが、これらの値は関数内で定義されていません。したがって、0 を返します。 (値が 0 の値で計算しているだけです)

function calculateIt(){
$overall = $first+$second+$third+$fourth/2;
return $overall;
}

次のように、値を関数に渡します。

function calculateIt($first = null, $second = null, $third = null, $fourth = null){
//Assigning the values in the declartion of the functions make it easy to
//check wether or not the valeus or ok for calculation
//
if ($first === null || $second === null || $third === null || $fourth === null) {
   return 0; //return 0 when not all values are sent.
}

//Do the calculation now when values are ok, and return calculated value
$overall = $first+$second+$third+$fourth/2;
return $overall;
}

もちろん、さらにチェックを行うこともできます。上記は単なる例です...

于 2013-05-05T18:59:13.413 に答える