-1

関数内でグローバル変数を作成しようとしていますが、関数の外でエコーしようとすると渡されません。

function check_input($data)
{
        if ( preg_match("/http/i", $data)) {$GLOBALS['spam'] = 'yes'; 
}

check_input($data);
echo $spam;
echo $GLOBALS['spam'];
4

3 に答える 3

2

正しい行動方針はreturn、グローバル変数に依存するのではなく、関数から値を取得することです。

function check_input($data)
{
    //Note the use of true instead of "yes". 
    //You can do more stuff with true/false.
    if ( preg_match("/http/i", $data)) { return true; }
    else { return false; }
}

$is_spam = check_input($data);
echo $is_spam; //1 or 0, because that's how true and false display in echo.

また参照してください:なぜグローバルな状態はとても邪悪なのですか?

于 2013-07-21T18:51:40.737 に答える
0

コードの問題は、構文エラーがあることです。

function check_input($data)
{
        if ( preg_match("/http/i", $data)) { $GLOBALS['spam'] = 'yes'; } //Note the } I've added.
}

check_input($data);
echo $spam;
echo $GLOBALS['spam'];

うまくいくはずです。

于 2013-07-21T18:52:54.193 に答える