0

関数に引数を渡さずに、関数内の変数を変更および初期化できるかどうか疑問に思いました。これが私が達成したいことです:

$foo = 'Lorem';
$array = array();
foobar($foo);
function foobar(){
    if (strlen($foo)== 1)
        $bar = 'Ipsum';
    else
        $array[] = 'error';
}

fubar();
function fubar(){
    if (empty($fouten))
        echo $bar;
}
4

2 に答える 2

1

$foo関数内のローカル(初期化されていない)変数です。$fooグローバル変数( )とは異なります$GLOBALS['foo']

2つの方法があります。

$foo;
$bar;
$array = array();

function foobar(){
    global $foo, $array, $bar;
    if (strlen($foo)== 1)
        $bar = 'Ipsum';
    else
        $array[] = 'error';
}

または$GLOBALアレイを使用して…</p>

ただし、これは実際には良い習慣ではなく、これらすべての副作用を伴うメンテナンスの悪夢になります

于 2012-05-24T13:58:10.993 に答える
1

phpの関数には、デフォルト値を持つ引数を指定できます。記述どおりに投稿したコードは、未定義の変数に関する通知を提供します。代わりに、次のように書くことができます。

function foobar($foo = null) {
    if($foo) { // a value was passed in for $foo 
    }
    else { // foo is null, no value provided
    }
}

この関数を使用すると、以下の行のどちらも通知を生成しません

foobar();
foobar('test');
于 2012-05-24T13:58:41.610 に答える