こんにちは。
前回の記事に続いてPHPさわってみる企画。データベースを使用した簡単なWEBアプリの開発またはゲーム制作への応用を目指します。
まだ基礎的なことが終わっていないのでJavaScript企画でも取り上げたようなことが続いてしまいます。飛ばしてしまうっていう手もあるんですけど一応…
こうやって記事を書くことで知識が定着するってこともあると思うので。
はじめに注意書き。
この記事は初心者がやってみた、という内容なので間違いを含んでいる場合があります。
今回は関数。書き方の違いはあれど、ほとんどのプログラミング言語に存在する機能だと思います。
複数の処理をセットにしておき、再利用することで効率化できるってやつです。
たとえばレストランなどのセットメニュー。
1番、2番、3番などと名前をつけていくつかのメニューをセットにしておけば、お客さんは「2番のセットください」というだけで1つ1つメニューを注文する必要がなくなります。そしてその注文方法は1人だけでなくたくさんのお客さんが利用できますね。だから効率爆上がりってわけです。
それではセットの作り方例。
<?php
function curreyset() {
echo "注文はカレーセットです。" . "<br>";
}curreyset();
curreyset();
?>
functionで始まっているところが関数の部分。名前をcurreysetとしました。文字を表示するだけの内容で、curreyset(); でこの関数を呼び出しています。
2回書いているのはわざとでコードの中にカレーセットですの文章は1度しか書いていなくても何度も表示させられるってことを見せたかっただけです。
改行はPHPだと\nなんですがWEBブラウザでは無視されるとかなんとかでHTMLのbrを書いています。
結果↓

次に引数というものを使ってみます。関数には値を渡すことができて、それに応じた返答を得るような形にできます。
たとえばカレーセットではドリンクを選べるとしましょう。
こういう書き方になります↓
<?php
function curreyset($drink) {
echo "注文はカレーセット、ドリンクは" . $drink . "です。" . "<br>";
}curreyset("オレンジジュース");
curreyset("ラッシー");
?>
関数呼び出しの部分で()内に文字列を入れています。オレンジジュースとラッシーです。
そして関数側、functionから始まっている部分の()内にはその関数で使うための変数を書きます。$drinkです。この変数にオレンジジュースやラッシーが代入され、関数内の文字列表示部分に反映されるっていう流れですね。
結果↓

こんな感じで関数の実行結果を変えることができます。このときの文字列オレンジジュースやラッシーを引数と呼びます。
もう1つ押さえておきたいのが関数は値を返すってことができます。
<?php
function curreyset($drink) {
return "注文はカレーセット、ドリンクは" . $drink . "です。" . "<br>";
}echo curreyset("オレンジジュース");
curreyset("ラッシー");
?>
関数内のechoがreturnに変わりました。returnは関数を呼び出したところに値を返します。
そして関数呼び出しのところにechoをつけています。引数がオレンジジュースのほうだけにechoをつけてラッシーにはつけていません。
結果↓

関数は「注文は~」の文字列を返しているので echo curryset(~で文字が表示されることになります。echoをつけていないと文字列が返ってきていても表示の指示がないので表示されません。
関数内で表示させるのと何がちがうか、ということになりますがこのへんは場合によって使い分けになります。
こうやって自分で作った関数をユーザー定義関数といいますが、最初から用意されている関数もたくさんあってそれらは組み込み関数といいます。
関数についてはこれくらいにします。
ありがとうございました。

(veo3.1を使用。ややフカン顔のらくがきを描いたのですがすぐに直されてしまいましたw)
余談
昨今ではWEBアプリも生成AIを使えば数分で作成できてしまうのだから、こういうこと(プログラミングの勉強)は必要ない、という声もありそうですよね。ただ、
1.非エンジニアであってもそういったAIを使うようになる
↓
2.趣味だけでなく、仕事などで要求されるスキルとなる
↓
3.期待したものにならなかった、では済まなくなるのでAIへの詳細かつ的確な指示が必要となる。または修正能力が必要となる。
つまり、基礎知識が必要になってくる、というのが今のところの自分の見解というか予測です。1.の非エンジニアでもっていうのがポイントで今までこそ要求されることがなかった知識がむしろ多くの人にとって必要、またはあると有利になってくるのではないでしょうか。PCが普及したころのように(知らんけど)。
もちろん、3.をカンペキに克服するためのAI開発っていうのもされていくのでしょうが、とりあえず私はサーバーやデータベースを使ったアプリを思いのままAIに生成してもらうっていうことをできる自信が今のところ無いのでこの企画を再開してみようと思った次第です。
なので出遅れ感はあるものの今後サーバーやらAIやらについても日記にまぜていきたいと思っています。