関数から呼び出される別の関数でも同じ配列を使うには
配列をグローバル変数化して、使おうとしています。
<?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を投げたりしていますが、この値は適当です。
お礼
関数のアロー記法というのですね。 展開して function A (ary) { return ary.map ( function (a, i) { return a.map ( function (v, j) { return ary[j][i]; }; ); } ); } 関数Aの中に関数Bが、その中に関数C。 つまらない拘りなのですが、関数A、B、Cは独立させたい。 function C (v, j) { return this.ary[j][this.i]; } function B (a, i) { return a.map (C, {ary: this, i: i}); } function A (ary) { return ary.map (B, ary); } エレガントに近づけてます?
補足
回答ありがとうございます。 あれからすぐに爆睡していました。 今は、何がなんだか判りません。(要ヒント!) 精進します。