- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPの再帰関数について)
PHPの再帰関数で配列の最後の要素を取り除きたい方法
このQ&Aのポイント
- PHPの再帰関数を使用して配列の最後の要素を取り除きたい場合、array_pop($array)やunset($array[count($array) - 1])を使用しても望んだ結果が得られません。
- 再帰関数を実行するたびに、新しい配列を生成したい場合は、関数内で配列を変数に代入し、再帰呼び出しの際にその新しい配列を引数として渡す必要があります。
- 以下は正しい動作をする再帰関数の例です。 function saiki($array) { if(count($array) === 1) { return $array; } else { array_pop($array); return saiki($array); } } $result = saiki(array('いちご', 'みかん', 'りんご', 'すいか')); var_dump($result); この例では、再帰呼び出しの際に新しい配列を引数として渡すことで、望んだ結果を得ることができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
実際の結果はどうやって出力させたのでしょうか。 手元では,NULLとなりましたし,それが妥当です。 # $arrayに2個以上の要素があった場合,関数の戻り値がないから。 saiki内でsaikiを呼び出した戻り値を,ちゃんと関数の戻り値にしないといけません。 > saiki($array); return saiki($array);
その他の回答 (1)
- agunuz
- ベストアンサー率65% (288/438)
回答No.1
これって再帰で処理するようなものなんですかね? while (count($array) > 1) { array_pop($array); } return $array; だけでいい話では? 再帰を使うのは function saiki($array) { foreach ($array as $val) { if (is_array($val)) { saiki($val); } } } のように階層を辿って処理するのが普通です(そのための「再帰」です)。
質問者
お礼
実際の処理ではそのように階層をたどるようになっております。今回のは重要部分だけを抜き出したような形です。 説明が足りず、すみませんでした。 ありがとうございます!
お礼
あぁ、、、return!! ありがとうございます!おかげさまで正しく処理出来ました! 本当にありがとうございます!