10代と話して驚いたこと

配列をグローバル変数化して、使おうとしています。


<?php


$strMoji=array("a","b","c","d","e","f","g","h","i");

$result=fun_disp(2);



function fun_disp($i){

global $strMoji;
echo $strMoji[$i];
return true;

}


?>


とすれば、$strMoji[$i];には、c が入っていると表示されました。
ところが、



<?php

$result=fun_example(8);

function fun_example($j){

echo $j;
$strMoji=array("a","b","c","d","e","f","g","h","i");

$result=fun_disp(2);


}


function fun_disp($i){

global $strMoji;
echo $strMoji[$i];
return true;

}


?>


とすると、$strMoji[$i]; が表示されなくなりました。


やりたいことは、「ある関数内で使っている配列を、その中から呼び出される

別の関数でも使いたい」ということです。

しかし、方法が分からないでいます。どのように書けばいいのでしょうか?

※関数に、2を投げたり8を投げたりしていますが、この値は適当です。

A 回答 (2件)

グローバルをつかうならこう


<?php
$result=fun_example(8);
function fun_example($j){
echo $j;
global $strMoji;
$strMoji=array("a","b","c","d","e","f","g","h","i");
$result=fun_disp(2);
}
function fun_disp($i){
global $strMoji;
echo $strMoji[$i];
return true;
}
?>

ただしグローバルは最後の手段、引数で渡すのが普通
    • good
    • 0
この回答へのお礼

ありがとうございました。両方の関数内に記述するわけですね。
引数を渡す方法も調べておきます。

お礼日時:2011/12/10 23:31

質問者と#1以外のやり方。


クラスを用いる。
でその両方の関数をクラスに入れてメソッドとして変数をグローバル変数ではなくて
プロパティとしてprivateとして定義する。
    • good
    • 0
この回答へのお礼

ありがとうございます。こういうときは、クラスかなあ? とも思いましたが、応用性はゼロだったので、作るまでもないかなあとしました。

お礼日時:2011/12/11 14:50

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


おすすめ情報