便利な関数

この研修では、この研修では、htdocs/LetsEngineer/curriculum/2-13フォルダに課題を作成してください。フォルダに課題を作成してください。
PHPには便利な組み込み関数と呼ばれるものが多数あります。
その中のいくつかを使って試してみましょう。
なお、公式ドキュメントでは下記のように載っているので、調べるときはここを見ましょう。
PHP公式ドキュメント-

数学に関する関数


まずは、数学、というよりは計算をする上で便利なメソッドを使ってみます。

ceil(切り上げ)


公式ドキュメント-ceil-

<?php
// index.php
$x = 5.2;
echo ceil($x);

floor(切り捨て)


公式ドキュメント-floor-

<?php
// index.php
$x = 5.2;
echo floor($x);

 

round(四捨五入)


公式ドキュメント-round-

<?php
// index.php
$x = 5.2;
echo round($x);

pi(円周率)


公式ドキュメント-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(文字列の長さ)


公式ドキュメント-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と出力してくれます。
主に 文字列を数える メソッドは、日本語を使用する場合に注意が必要です。
今までみてきた中ですと、strlenstrpossubstrです。
これらに関しては、すでにマルチバイト対応のメソッドがあります。
公式ドキュメント-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)


公式ドキュメント-sprintf-

printfに似たメソッドで、sprintfというメソッドがあります。
ほとんど同じように使用できますが、printfechoと同様出力をしますが、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;

printfsprintfについてみてきましたが、%記法も非常に重要で、使う機会も増えると思います。
種類は多いので、使う場面がきたら、下記で調べられると覚えておきましょう。
公式ドキュメント-sprintf-

課題


  • 本項で扱った各メソッドに関して、1つずつ自分で例題をつくって試してみましょう。
  • 凝ったものである必要はありません。
  • マルチバイト対応の関数はやらなくてもよいです(mb_strlenなど)

IT用語 SESに向けて準備しよう


3章では一つ一つの項目で数個のIT用語について調べていただきます。
どの用語もSESでよく耳にする言葉なのできちんと調べていきましょう!

下記の用語について、調べてみましょう。
※IT用語についてはチェックテストの範囲外です。

1. PostgreSQL・Oracle SQL
2. TortoiseGit・TortoiseSVN
3. 外部設計・内部設計

用語の意味を調べて同じく2-13フォルダ内に記載してください。

カテゴリー

アーカイブ

Close Bitnami banner
Bitnami