PHP超初心者。ヒント見てもわからない、、、 どのように書けばよいでしょうか?教えてほしいです。。。
PHP超初心者。ヒント見てもわからない、、、 どのように書けばよいでしょうか?教えてほしいです。。。 - この問題ではpush()関数とpop()関数をそれぞれの要件に見合った動きをするように作成してもらいます。 - 期待する動作に記載されている通りの出力となるよう、関数の処理を記述してください。 - 以下の関数を定義し、指定された動作をするように記述してください。 push()関数 スタックの末尾に要素を一つ追加します。 pop()関数 - スタックの末尾から要素を一つ取り出します。 [PHP: 配列 関数 - Manual) の内、[array_push][array_pop][array_shift][array_unshift]の4つの関数を使わずに実装してください。 (この課題では、[array_push][array_pop]と同様の処理を実装してください。) 値の追加は1つずつ行われるようなpush()関数を作成してください。 push()関数とpop()関数のブロック内だけを修正してください。 ・期待する動作結果↓ 以下、末尾に追加、末尾から取り出しの場合になります。 Array ( [0] => 9 [1] => 8 [2] => 7 ) Array ( [0] => 9 ) Array ( [0] => 9 [1] => 6 [2] => 3 ) ``` ヒント - 配列関数の[count](https://www.php.net/manual/ja/function.count.php)関数を使って、配列の長さを取得しましょう。 - var_dump()を使って、配列の状態を確認してみましょう。配列のデータを削除した時に配列添字が飛ぶような場合は詰める方法を調べてみましょう。 - スタックは後ろに追加して後ろから取り出す方法と、前から追加して前から取り出す方法があります。今回は前者のスタックは後ろに追加して後から取り出す方法で記述してもらっています。配列への値の追加が1行の簡単なコードで済むからです。 ```php $hairetu = array(); $hairetu[] = 'hoge'; //配列の最後に文字列「hoge」が追加されます。 ``` - 配列からデータを削除する場合は、unset()を使いましょう。unset()は参照を削除するだけで、配列の1要素に対して使った場合は欠番になって歯抜けの配列になってしまいます。array_merge()関数、array_values()関数を使って配列添え字(インデックス)を詰める必要があります。
ベストアンサー
放置されたままのようですが・・・ https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13263582818 >スタックの末尾に要素を一つ追加します。 スタックとは何でしょうか? >[array_push][array_pop][array_shift][array_unshift]の >4つの関数を使わずに実装してください。 ということは(前の回答で推測したとおり)配列でいいのですかね? 関数の引数はどのように与えるのでしょうか?前も書きましたが複数の引数が必要な関数と思われるのに、引数の順番が未指定ではどうしようもありません。 >push()関数とpop()関数のブロック内だけを修正してください。 「ブロック内」以外の部分を提示してください。でないと正確な回答は書けません。 >この課題では、[array_push][array_pop]と同様の処理を >実装してください。 すでに回答した気がするのですが・・・ ひょっとして「スタック」というのが数字添え字の配列に限定で function push(&$arr, $var) { $arr[] = $var; } function pop(&$arr) { $key = count($arr)-1; $tmp = $arr[$key]; unset($arr[$key]); $arr = array_values($arr); return $tmp; } ということですか(それでも前の回答から導き出せると思うんだけど)。 あと、 >・期待する動作結果↓ > 以下、末尾に追加、末尾から取り出しの場合になります。 どう見ても、push/pop の動作になっていないんですが・・・
質問者からのお礼コメント
有難うございます
お礼日時:6/24 14:21