dポイントプレゼントキャンペーン実施中!

宜しくお願いします。
関数A内で作成したローカル変数 「a」 を、
その関数A内で作った関数Bで、変数「a」を操作しようと思います。

簡単に書くとこうです。

function A(){

$a = array(あ、い、う);

function B(){

$a = array(い、う)
}

  ※$aを使っての処理

}

<試してみたこと>
関数B内で、global $a として、変数をグローバルにしましたが、関数Bの操作は反映されませんでした。

retun で戻せばよいとも、もちろん考えましたが、
処理の都合上、どうしてもグローバルに扱いたく思います。
とても、大雑把な質問形式で申しわけございませんが、何卒、ヒントを下さいませ。

A 回答 (2件)

A()の中でもglobal設定してみては?



<?PHP
function A(){
global $a;
$a = array("あ","い","う");
function B(){
global $a;
$a = array("い","う");
}
B();
print_r($a);
}

A();
?>

ただ、グローバルで変数を受け渡すなんて常識的にはしませんけどね・・・
returnしたくなければリファンレンス渡しとかはどうでしょう?

<?PHP
function A(){
$a = array("あ","い","う");
function B(&$a){
$a = array("い","う");
}
B($a);
print_r($a);
}

A();
?>

この回答への補足

大変分かり易く有難うございます。なるほどリファンレンス渡しですね!
勉強になりました。
あと、恐れ入ります、
グローバルしない理由は、簡単にいうとなぜなのでしょうか?
グローバルの性質上、開発中に混乱を起こしてしまう危険があるからでしょうか?

補足日時:2011/04/08 18:55
    • good
    • 0
この回答へのお礼

なんとか目的通りのプログラムができました。

大変助かりました。
ご指導有難うございました。

お礼日時:2011/04/10 22:27

>グローバルしない理由は、簡単にいうとなぜなのでしょうか?


>グローバルの性質上、開発中に混乱を起こしてしまう危険があるからでしょうか?
モジュール強度について勉強しましょう。
    • good
    • 0
この回答へのお礼

有難うございます、近々勉強いたします。

お礼日時:2011/04/10 22:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!