- 【PHP】下らねぇ質問はここに書き込みやがれ 10
879 :デフォルトの名無しさん (ワッチョイ 09da-Cd0d)[sage]:2020/03/29(日) 10:25:07.65 ID:wUzzaaBN0 - 文字列と多次元配列の値に対して一括で処理できるメソッドで質問です。
下記メソッドで$hogeに多次元配列が渡ってきたと仮定しまして、 値が配列であれば再起処理でメソッドが再度呼び出されるそうです。 私の考えでは、再起処理で多次元配列の中の値が配列ではなかったときは、 Aの文字列の方に流れるのではと思っていたのですが、実際は@に流れるようです。 多次元配列の中の文字列にis_array()を掛けてもfalseなのですが、どういった理由で @に流れるのでしょうか? function test($hoge) { // 配列の場合 if (is_array($hoge)) { foreach ($hoge as $key => $value) { // 再起処理 if (is_array($value)) { test($value); } // @配列の中の値が配列でない場合 else { ... } } return; } // A文字列の場合 return; }
| - 【PHP】下らねぇ質問はここに書き込みやがれ 10
881 :デフォルトの名無しさん (ワッチョイ 09da-Cd0d)[sage]:2020/03/29(日) 14:07:51.77 ID:wUzzaaBN0 - >>880
誤字失礼しました。 どうにも理解できなくて、再度質問しようと文字に起こしていたところ自己解決できました。 Aは文字列専用の終了条件で@は配列専用の終了条件だったようです。 再帰処理の際に値が文字列なのに、何で配列判定で true が出るのだろう? というところが疑問だったのですが、 本来であれば配列の中の配列である [] で再帰処理されるところを、その中の値Bで 再帰処理されていると勘違いしておりました。 ご迷惑おかけしました。 $hoge = [ 'piyo1', 'piyo2', [ // B 'piyo3' ] ];
|
|