2011-10-27 5 views
0

内のif文での配列から利用価値PHP:私は私のコードで正常にインラインで動作する次のコードをしている機能

function progressOutput() { 

    if ($progressData[1] == "yes") { 

     echo "Complete"; 
    } 
    else 

     echo "Not Yet Complete"; 

} 

私はprogressOutput()を呼んで、私は$progressData[1]が「はい」と同じであるにもかかわらず、「未完了」を取得。ここで

は、私は関数を呼び出しています方法です:

Mission Status: <?php progressOutput(); ?> 

私は$progressData[1]は実際には「はい」と等しいときprogressOutput()は、「完了」を返すために得ることを行うために何が必要ですか?

答えて

3

呼び出し元スコープの変数を関数に渡して、関数がその関数にアクセスできるようにする必要があります。

あなたの関数は、引数受け入れる必要があります。

function progressOutput ($progressData) { 
    if ($progressData[1] == "yes") 
     echo "Complete"; 
    else 
     echo "Not Yet Complete"; 
} 

をそして、あなたはそれを呼び出すとき、あなたは引数を提供する必要があります:

Mission Status: <?php progressOutput($progressData); ?> 

それが直接データを出力するようにあなたの機能のために一般的に悪い考えですが。

function progressOutput ($progressData) { 
    if ($progressData[1] == "yes") 
     return "Complete"; 
    return "Not Yet Complete"; 
} 

そして、関数によって返された値を出力する:あなたは値を返す代わりに、それをエコーで、それをクリーンアップすることができ

Mission Status: <?= progressOutput($progressData); ?> 
+0

おかげでmeagar!これはトリックでした!最初の部分を試しましたが、関数を呼び出したときに引数を提供することを忘れてしまいました。再度、感謝します! –

2

PHPでvariable scopingを検索します。 PHPの変数は、スコープを低くするために「細流化」しないので、下位のスコープでは明示的にグローバルに宣言して可視にする必要があります。

function progressOutput() { 
    global $progressData; 
    etc... 
} 

他のオプションパラメータとしてprogressDataに渡すことです:$ progressDataは、あなたがあなたの関数に渡す必要がありますあなたの関数 の範囲内にない

progressOutput($data); 

function progressOutput($progressData) { 
    .... 
} 
+0

Marc B.ありがとうございました。私は最初のものを試していないが、それもうまくいくと確信している。再度、感謝します! –

0

。上記のように、関数を使用していると仮定すると、

機能progressOutput($ progressData){ //それが今ここに利用できるようになります }

0

が、これは関数内でこの変数が知られていないことを意味します。

global $progressData; 

その後、あなたがそれを使用することができます。ためには

は、あなたがこのような変数にglobalでできることをすることができます。

それとも、関数内で変数を渡す必要があります。

progressOutput(progressData[1]); 
関連する問題