PHPで配列を出力するプログラムの動作
PHPの$GLOBALS
について知りたいと思ってプログラムを書きました。
$intは無限ループを回避するための変数です。
下記のfuncxxx()
はif文で一度しか行が出力されないのですが下のfunc()だとif文に何故か2度入ってるように見えます。
どうしてそうなるのか詳しい方教えてくださいよろしくお願いします。
funcxxx(Array $ary,Integer $int):$aryの中の要素を出力する。$intは無限ループ防止用です。
func(Array $ary,Integer $int):$aryの中の要素を出力する。$intは無限ループ防止用です。funcxxxと同じですが再帰呼び出しのところが異なります。
function funcxxx($ary,$int)
{
if($int>30)
{
echo " $int hoge $ary hoge <br>";
$int = 0;
return;
}
if(gettype($ary) != "array")
{echo "$ary <br>";}
foreach ($ary as $value) {
if(gettype($value) != "array"){
// func($value);
echo "$value <br>";
}else{
funcxxx($value,++$int);
}
}
}
function func($ary,$int)
{
if($int > 30){
echo " $int hoge $ary hoge <br>";
$int = 0;
return;}
if(gettype($ary) == "array") {
foreach ($ary as $key => $value) {
func($value,++$int);
}
} else {
echo "$key $ary <br>";
}
}
$int = 0;
funcxxx($GLOBALS,++$int);
//31 hoge array hoge <br>
$int = 0;
func($GLOBALS,++$int);
//31 hoge array hoge <br>
//32 hoge 1 hoge <br>