プログラミング得意なやつ来てくれ

転職
Virtual reality. Engineer working in virtual gloves. Microcontrollers connected to the fingers of engineer
スポンサーリンク
1: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:08:15.428 ID:SoeVDWY30
PHP

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;
func($GLOBALS,++$int);
//31 hoge array hoge <br>

funcxxx($GLOBALS,++$int);
//31 hoge array hoge <br>
//32 hoge 1(GLOBALSの$intのvalue) hoge <br>

なんで動きが違うんや。

引用元: ・プログラミング得意なやつ来てくれ

2: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:09:01.474 ID:Dmqv7D+H0
phpわからん

3: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:09:42.381 ID:SoeVDWY30
因みに$GLOBALSは[[],[],[],$GLOBALS,$int,…]
って配列やつまり無限ループもった配列

15: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:35:34.413 ID:+0xXYMSK0
>>3
コピーされるだけで無限ループにはならんだろ

16: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:37:57.303 ID:SoeVDWY30
>>15

$GLOBALS[“index_number”=>GLOBALS[“index_number”=>GLOBALS…]]
こんな感じで無限ループになる。
$intで適当に30回ぐらい呼び出されたらスタックから帰ってくるようにしといた

18: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:42:36.644 ID:+0xXYMSK0
>>16
ああそうか、$GLOBALSは暗黙で参照か
だから [[],[],[],&$GLOBALS,&$int,…] だな

で、funcとfuncxxxがどう違うのかインデントとかがアレなんでよくわからん

4: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:09:49.243 ID:GoYNsiO6H
phpは無理だわ

5: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:11:43.084 ID:SoeVDWY30
$var = var var
gettype(hoge) => typeof hoge
$GLOBALS => var GLOBALS = [//]
phpはこんな感じや

6: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:13:25.443 ID:SoeVDWY30
たのむパソコンの大先生助けてくれ

8: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:16:06.520 ID:UMBxthMM0
>>6
助けを求める相手が違いすぎるだろwwwww

7: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:15:12.037 ID:OplosVpG0
見づらい
関数の定義どこで終わってるんだ

9: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:16:37.478 ID:SoeVDWY30
>>7
funcxxx()とfunc()はほぼ同じ動作する関数や、。
funcxxx(){
}

func(){
}
インデント苦手や

10: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:19:29.713 ID:OplosVpG0
echo “$key $ary <br>”;
}
}
ここまでが2個目の関数の定義で
$int = 0;
func($GLOBALS,++$int);
//31 hoge array hoge <br>

funcxxx($GLOBALS,++$int);
//31 hoge array hoge <br>
//32 hoge 1(GLOBALSの$intのvalue) hoge <br>
ここで2つの関数を実行してるという見方でいい?
コメントは出力結果?

11: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:25:01.545 ID:SoeVDWY30
>>10
そのつもりや。
//出力結果
すまん今調べたらfuncxxxとfuncで出力結果逆になってた。

13: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:29:40.468 ID:OplosVpG0
>>11
$int = 0;
func($GLOBALS,++$int);
//31 hoge array hoge <br>

funcxxx($GLOBALS,++$int);
//31 hoge array hoge <br>
//32 hoge 1(GLOBALSの$intのvalue) hoge <br>

をそのまま実行したらfuncxxx($GLOBALS,++$int);
の実行時点で$intは31になってるけど初期化しなくていいの?

14: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:33:26.954 ID:SoeVDWY30
>>13
ホントだ。1個ずつやってたから気付かなかった。
スマソスマソ

12: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:28:34.848 ID:SoeVDWY30
func($GLOBALS,++$int);
//31 hoge array hoge <br>
//32 hoge 1(GLOBALSの$intのvalue) hoge <br>
funcxxx($GLOBALS,++$int);
//31 hoge array hoge <br>

訂正しまった。

17: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:41:14.071 ID:SoeVDWY30
$GLOBALSのなかみはこんな感じや。
//$key $value
_GET =>Array
_POST =>Array
_COOKIE =>Array
_FILES =>Array
GLOBALS =>Array
int =>>>0
value =>>>0
key value

すまんもっと早く書いとくべきやった

19: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:50:15.948 ID:+0xXYMSK0
とりあえずわかったことは、
funcxxxはif(gettype($ary) != “array”)のechoの後elseしてない
funcはelseのechoのところで未定義変数$keyを使っている

20: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 13:58:02.441 ID:SoeVDWY30
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>”;
}
}
インデント直せた。

22: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 14:07:49.304 ID:w/nbCpD30
実行結果はどうなるの?

23: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 14:09:34.108 ID:+0xXYMSK0
インデントもそうだけど、{}の位置とかがおかしいのをどうにかしろよ

24: 以下、5ちゃんねるからVIPがお送りします 2018/12/06(木) 14:15:08.632 ID:JMoo7tPg0
最初のfuncxxx()呼び出し時の$int===0じゃなくね?

転職
スポンサーリンク
りょうたろうをフォローする
スポンサーリンク
プログラミングまとめ速報ちゃんねる

コメント

タイトルとURLをコピーしました