

PHPの`$GLOBALS`について知りたいと思ってプログラムを書きました。  
$intは無限ループを回避するための変数です。  
下記の`funcxxx()`はif文で一度しか行が出力されないのですが下のfunc()だとif文に何故か２度入ってるように見えます。  
どうしてそうなるのか詳しい方教えてくださいよろしくお願いします。  
funcxxx(Array $ary,Integer $int):$aryの中の要素を出力する。$intは無限ループ防止用です。  
func(Array $ary,Integer
$int):$aryの中の要素を出力する。$intは無限ループ防止用です。funcxxxと同じですが再帰呼び出しのところが異なります。

[code]

     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>
    
[/code]


CC BY-SA 4.0
2018-12-06T04:23:20.553
50957
2018-12-06T04:49:48.283
2018-12-06T04:49:48.283
31320
31320
question
php
PHPで配列を出力するプログラムの動作