[PHP-users 10338] Re: 関数内での2次元配列の返り値を取得するには?
FUJIMOTO Yoshihiko
php-users@php.gr.jp
Wed, 25 Sep 2002 15:23:40 +0900
藤本@質問者です。
近藤さん。皆さんスミマセン..。
大ボケかましてしまいました..。
> PHP のバージョンの問題なのでしょうか??。
いえ、ちがいます。
関数内で初期化したハズの
> global $iCountX,$iCountY;
に値がキチンと渡っていませんでした。
そのため、計算のループが廻らずに期待した配列変数が空っぽのままでした。
// そりゃそうだわなぁ..
実はこの計算は、さらに別な関数内で行っていた計算でして、実際は、
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function motomoto(){
...
$iCountX=4*10;
$iCountY=3.2*10;
...
function sample(){
global $iCountX,$iCountY;
for($ix2=0 ; $ix2 <= $iCountX ; $ix2++){
for($iy2=0 ; $iy2 < $iCountY ; $iy2++){
$HOGE1[$ix2][$iy2]=$ix2*1000+$iy2;
$HOGE2[$ix2][$iy2]=$ix2+$iy2;
}
}
return array($HOGE1,$HOGE2);
}
list($hoge1,$hoge2)=sample();
echo("<hr>\n");
for($iy2=0 ; $iy2 <= $iCountY ; $iy2++){
for($ix2=0 ; $ix2 < $iCountX ; $ix2++){
echo("hoge1[".$iy2."][".$ix2."]=".$hoge1[$iy2][$ix2]."<br>\n");
echo("hoge2[".$iy2."][".$ix2."]=".$hoge2[$iy2][$ix2]."<br>\n");
}
}
echo("<hr>\n");
...
}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
のスタイルで
$iCountX, $iCountY
を計算した後、配列を生成する関数を呼び出していました。
「$iCount*が渡っていないのでは?」と疑いを持って、これを
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function sample($iCountX,$iCountY){
// global $iCountX,$iCountY;
...
list($hoge1,$hoge2)=sample($iCountX,$iCountY);
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
の形式に直して実行しましたところ、期待した結果を得ることができました。
どうにも、脳ミソが短絡している様子でスミマセンでした。
原因がわかりましたので、実装で対策を考えます。
お騒がせいたしました。
m(_"_)m