この研修では、この研修では、htdocs/LetsEngineer/curriculum/2-13
フォルダに課題を作成してください。フォルダに課題を作成してください。
PHPには便利な組み込み関数と呼ばれるものが多数あります。
その中のいくつかを使って試してみましょう。
なお、公式ドキュメントでは下記のように載っているので、調べるときはここを見ましょう。
PHP公式ドキュメント-
数学に関する関数
まずは、数学、というよりは計算をする上で便利なメソッドを使ってみます。
ceil(切り上げ)
<?php // index.php $x = 5.2; echo ceil($x);
floor(切り捨て)
<?php // index.php $x = 5.2; echo floor($x);
round(四捨五入)
<?php // index.php $x = 5.2; echo round($x);
pi(円周率)
// index.php <?php echo pi(); function circleArea($r) { $circle_area = $r * $r * pi(); echo $circle_area; } // 半径が2の円の面積の計算 circleArea(2); ?>
mt_rand(乱数)
公式ドキュメント-mt_rand-
乱数というと聞き馴染みがないかもしれませんが、要はランダムな値を1つ出力します。
ゲームなどでよく使用します(最近だとガチャですね)。
1から100の範囲で、ランダムに1つ数字を取り出す場合の例を書きます。
// index.php <?php echo mt_rand(1, 100);
なお、randという関数もありますが、mt_rand
の方が速度が速く、ほぼ同じ挙動なので、基本はmt_rand
を使用すれば良いです。
文字列に関する関数
今度は文字列に関する関数です。
strlen(文字列の長さ)
<?php $str = "hogehoge"; echo strlen($str);
strpos(検索)
公式ドキュメント-strpos-
strpos
は、対象の文字列の中に、ある文字が何番目にあるか教えてくれます。
例えば、yoneyama
という文字列の中で、a
という文字を探すと、6文字目と8文字目にあります。
ただし、strpos
は 最初に出てくる順番 なので、出力としては6文字目が該当します。
また、プログラミングにおいて、順番は0から始まるので、6文字目は 5 で返却されます。
<?php $str = "yoneyama"; echo strpos($str, "a"); // => 5と出力される
substr(文字列の切り取り)
公式ドキュメント-substr-
substr
で対象の文字列から一部分を抜き取ることができます。
先に例を示します。
<?php $str = "yoneyama"; echo substr($str, -2, 2); // => maと出力される
substr
の公式ですが、
substr(対象の文字列, 開始位置, 文字数)
になります。
substr($str, -2, 2)
であれば、$str
の-2番目から2文字を切り取るということですね。
ちなみに、間違えやすい文字列の順番ですが、下記で覚えてください。
str_replace(置換)
公式ドキュメント-str_replace-
str_replace
は対象の文字列を置き換えるメソッドです。
<?php $str = "yoneyama"; echo str_replace("neya", "NEYA", $str);
str_replace
の公式ですが、
str_replace(置き換える前の文字列, 置き換えた後の文字列, 対象の文字列)
str_replace("neya", "NEYA", $str);
であれば、yoneyamaの中の neya の部分を NEYA に置き換えています。
また、「 空白を空文字で置き換える 」という意味で、空白を削除する、という使い方もされます。
<?php $str = "I am Yoneyama"; echo str_replace(" ", "", $str);
この場合、半角スペースを空文字に置き換えています。
つまり、スペースがなくなります。
日本語において、文字列操作の関数を使用する場合
文字列に関する関数を見てきましたが、実は日本語を扱うとちょっとおかしな事になったりします。
例えば「あいうえお」の文字数を数えるとします。
<?php $str = "あいうえお"; echo strlen($str); // => 15
これを実行すると、15と出力されます。
これは、日本語の文字が マルチバイト文字列 というものだからです。
半角英数字とは違う数え方をするので、こうなってしまいます。
そこでそれを対応させる為にはmb_
とつく、マルチバイトに対応したメソッドを使用してあげましょう。
ちなみに、mb
はマルチバイトの略です。
<?php $str = "あいうえお"; echo mb_strlen($str); // => 5
これで5と出力してくれます。
主に 文字列を数える メソッドは、日本語を使用する場合に注意が必要です。
今までみてきた中ですと、strlen
、strpos
、substr
です。
これらに関しては、すでにマルチバイト対応のメソッドがあります。
公式ドキュメント-mb_strlen-
公式ドキュメント-mb_strpos-
公式ドキュメント-mb_substr-
表示に関する関数
printf(フォーマット化した文字列を出力)
公式ドキュメント-printf-
フォーマットされた文字列ってどういうこと?と思うかもしれないので、まずは例を示します。
<?php $name = "米山さん"; $limit_number = 40;
上記の変数を使用して、「米山さんの残り時間はあと40時間です」という文字列を出力したいとします。
今まで習った方法だと、echo
で連結演算子を使用する方法だと思います。
echo $name."の残り時間はあと".$limit_number."です";
ちょっと見づらいですね。
printf
を使用すると少し見やすくなります。
printf("%sの残り時間はあと%dです", $name, $limit_number);
これはこれで見づらいですが、読み方を覚えるとこちらの方が見やすくなります。
まずは、"%sの残り時間はあと%dです"
です。
これがフォーマット化された文字列です。
要は先に、完成形の文字列を用意してあげます。
文字列の中にある、%s
、%d
ですが、これはここに変数が入るよ、と教えてあげています。
%s
、%d
は %記法 と呼び、何のデータ型で入るか指定してあげます。
%s
…文字列%d
…数値
printf("%sの残り時間はあと%dです", $name, $limit_number);
第2引数以降は入る順番で変数を入れます。
1番目に入るのは「米山さん」($name
)です。
2番目に入るのは「40」($limit_time
)です。
入る文字列を増やしても、引数を増やせば良いだけです。
例えば、下記のように変更することも可能です。
$name = "米山さん"; $limit_time = 40; $price = 4000; printf("%sはあと%d時間で%dの罰金です。", $name, $limit_time, $price);
増やしても引数と%d
の場所を増やせば問題ないです。
なお、再三になりますが、文字列が入るなら%s
、数値が入るなら%d
で場所をとっておきます。
また、printf
は他にも使い方があります。
残り時間を2桁で表示したいこともあると思います。
(残り04時間30分、など)
$limit_hour = 20; $limit_minute = 10; printf("残り%02d時間%02d分", $limit_hour, $limit_minute); $limit_hour = 4; $limit_minute = 4; printf("残り%02d時間%02d分", $limit_hour, $limit_minute);
「残り20時間10分」と「残り04時間04分」と表示されたと思います。
%02d
と02を入れることで、桁数を指定することができ、空いた桁に0を勝手に入れてくれます。
sprintf(変数に代入できるprintf)
printf
に似たメソッドで、sprintf
というメソッドがあります。
ほとんど同じように使用できますが、printf
はecho
と同様出力をしますが、sprintf
はフォーマット化して終わりです。
そのため、出力するためには別途echo
する必要があります。
<?php $limit_hour = 4; $limit_minute = 4; printf("残り%02d時間%02d分", $limit_hour, $limit_minute); // sprintfだけでは出力までできない $limit_time = sprintf("残り%02d時間%02d分", $limit_hour, $limit_minute); echo $limit_time;
printf
とsprintf
についてみてきましたが、%記法も非常に重要で、使う機会も増えると思います。
種類は多いので、使う場面がきたら、下記で調べられると覚えておきましょう。
公式ドキュメント-sprintf-
課題
- 本項で扱った各メソッドに関して、1つずつ自分で例題をつくって試してみましょう。
- 凝ったものである必要はありません。
- マルチバイト対応の関数はやらなくてもよいです(
mb_strlen
など)
IT用語 SESに向けて準備しよう
3章では一つ一つの項目で数個のIT用語について調べていただきます。
どの用語もSESでよく耳にする言葉なのできちんと調べていきましょう!
下記の用語について、調べてみましょう。
※IT用語についてはチェックテストの範囲外です。
1. PostgreSQL・Oracle SQL
2. TortoiseGit・TortoiseSVN
3. 外部設計・内部設計
用語の意味を調べて同じく2-13
フォルダ内に記載してください。