###発生している問題
次のコードを実行し、aaa
がダンプされ、bbb
がされないのに、これが出力されるはず
が返されません。
理由が知りたいのですが、お分かりになる方いらっしゃいますでしょうか?
php
1var_dump('aaa'); 2return 'これが出力されるはず'; 3var_dump('bbb');
###詳しいコード
hoge
にあるのが上記の流れです。
php
1<?php 2$response_cake = [ 3 'cake' => [ 4 'items' => [] 5 ] 6]; 7 8$result_cake = valid_response( $response_cake ); 9var_dump($result_cake); 10 11function valid_response( $response ){ 12 13 $set = 'items'; 14 $required = [ 15 'cake' => [ 16 'items' => [] 17 ] 18 ]; 19 20 $result = hoge( $response, $required, $set ); 21 return $result; 22} 23 24function hoge( $response, $required, $set ){ 25 $result = ['初期値']; 26 foreach( $required as $k1 => $v1 ){ 27 if( $k1 != $set ){ 28 foreach( $response as $k2 => $v2 ){ 29 hoge( $v2, $v1, $set ); 30 } 31 }elseif( $k1 == $set ){ 32 var_dump('aaa'); 33 return 'これが出力されるはず'; 34 var_dump('bbb'); 35 } 36 } 37 return $result; 38}
私の考えはこうです。
・hoge
が実行され、$k1 == $set
まで処理は進んでいる
・だからvar_dump('aaa');
が効く
・そしてvar_dump('bbb');
が効かない
・よってこれらの間のreturn 'これが出るはず';
が効いていて、だからvar_dump('bbb');
が効いていないのだとわかる
・というわけでこれが出力されるはず
が出力されるはず
↓
なのになぜ初期値
が出力されるのか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/10 12:14
2020/07/10 12:16