【PHP】レッスン3-01:ビルトイン関数を使おう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:ビルトイン関数

この記事の練習問題を解くために必要な知識:
ビルトイン関数関数の定義と呼出し関数の戻り値デフォルト引数とキーワード引数関数の型付け無名関数とアロー関数スコープ

<<前のページ PHP記事一覧 次のページ>>

PHPの「ビルトイン関数」とは

この章ではPHPにおける「ビルトイン関数」の意味や使い方を学習します。用語の解説が不要な方はここをクリックして練習問題へ飛びましょう。




PHPにはプログラムを効率的に書くための便利な「関数」が数多く用意されています。

関数とは、特定の処理をまとめて再利用可能にした仕組みのことです。

この記事の次の記事では、自分で関数を定義して活用する方法を学びますが、この記事ではまずPHPにあらかじめ用意されている「ビルトイン関数」を紹介します。

これらの関数を理解することで、より効率的にプログラムを書くことが可能です。

関数とビルトイン関数とは?

関数は繰り返し使われる処理をまとめたもので、プログラムを簡潔かつ管理しやすくするために使われます。

PHPには自分で関数を定義する方法もありますが、最初から定義された「ビルトイン関数」も豊富に用意されています。

ビルトイン関数は、追加の準備やインポート作業なしにそのまま使うことができ、プログラミングの様々な場面で役立ちます。

例えば、入力を受け取るためのfgets()、デバッグ用のvar_dump()、文字列の長さを調べるstrlen()などがあり、これらを活用することで作業効率が大幅に向上します。

主要なビルトイン関数の紹介

以下では、初心者が特に知っておくべきビルトイン関数を順番に解説します。

1. fgets()

標準入力からデータを取得する関数です。

主にターミナルやコマンドラインでのプログラム実行中に、ユーザーからの入力を受け取る場面で使います。

echo "名前を入力してください: ";
$name = trim(fgets(STDIN)); // 標準入力から名前を取得
echo "こんにちは、$name!" . PHP_EOL; // 挨拶を出力

上記コードではユーザーが入力した文字列が$nameに保存され、出力で利用されています。

2. trim()

文字列の先頭と末尾の空白や不要な改行を削除する関数です。

$input = "  PHP入門  ";
$cleaned = trim($input); // 両端の空白が削除される
echo $cleaned . PHP_EOL; // "PHP入門" を出力

特にfgets()と組み合わせて使うと、ユーザーの入力を正確に処理できます。

3. var_dump()

デバッグで使われる関数で、変数の値や型を詳細に表示します。

初心者がデータの内容を確認する際に役立ちます。

$variable = 123;
var_dump($variable); // int(123) と出力

この例では、変数$variableが整数型で値が123であることを表示しています。

4. strlen()

文字列の長さを取得する関数です。

$string = "Hello, PHP!";
echo strlen($string) . PHP_EOL; // 12 を出力

この関数を使えば、文字列が何文字あるのか簡単に調べることができます。

5. echo

文字列や変数を画面に出力する基本的な関数です。

$message = "PHPは楽しい!";
echo $message . PHP_EOL; // "PHPは楽しい!" を出力

この関数は非常にシンプルですが、プログラムの動作確認に欠かせません。

6. print_r()

配列やオブジェクトの内容を簡易的に表示する関数です。

var_dump()よりも見やすい形式で表示されます。

$data = ["PHP", "初心者", "勉強中"];
print_r($data);
// Array
// (
//     [ 0] => PHP
//     [ 1] => 初心者
//     [ 2] => 勉強中
// )

7. is_numeric()

値が数値かどうかを判定する関数です。

$value = "123";
if (is_numeric($value)) {
    echo "$value は数値です。" . PHP_EOL;
} else {
    echo "$value は数値ではありません。" . PHP_EOL;
}

この関数は、数値かどうかを条件分岐で判定する際に便利です。

ビルトイン関数を使う利点

ビルトイン関数を使うと、複雑な処理を簡潔に記述できます。

例えばtrim()を使えば正規表現やループを使わずに文字列の空白を削除できます。

またvar_dump()print_r()は、デバッグをスムーズに進めるための必須ツールです。

初心者がこれらの関数を活用することで、効率的にプログラムを作成できるようになります。

まとめ

この記事ではPHPにおける基本的なビルトイン関数について学びました。

これらの関数を知ることで、日常のプログラミングがぐっと簡単になります。次回の記事では、PHPで独自の関数を定義して使う方法について学びます。

自分だけの関数を作れるようになれば、さらに柔軟で強力なプログラムが書けるようになるでしょう。

ビルトイン関数の練習問題

ビルトイン関数を使ったプログラムを作成しましょう。

このプログラムでは、ユーザーから名前を入力してもらい、その名前を使った挨拶文を表示します。

また、名前の文字数を計算して表示するほか、ランダムな仮年齢を生成し、その年齢に基づいて成人か未成年かを判定します。

PHPの基本的なビルトイン関数を学ぶ良い機会です。使用されている関数の役割を考えながらコードを書いてみましょう。

この問題の要件

以下の要件に従ってコードを完成させてください。

  • ユーザーから名前を入力してもらい、その入力をfgets()関数で取得すること。
  • 入力された名前の両端の空白や改行をtrim()関数で削除すること。
  • 名前を使って「こんにちは、○○さん!」という挨拶文を作成し表示すること。
  • 名前の文字数をstrlen()関数で計算し、その結果を表示すること。
  • 入力された名前のデバッグ情報(変数の型と値)をvar_dump()関数で表示すること。
  • mt_rand()関数を使って10~80の間でランダムな仮年齢を生成し、その値を表示すること。
  • 仮年齢が18歳以上なら「あなたは成人です。」、それ未満なら「あなたは未成年です。」と表示すること。

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

あなたの名前を入力してください:
たろう
こんにちは、たろうさん!
あなたの名前の文字数は次の通りです: 3文字
デバッグ情報: 
string(9) "たろう"
あなたの仮の年齢は 25歳です。
あなたは成人です。

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:PHPスクリプトの開始を示すタグを記述
2:「あなたの名前を入力してください: 」を改行付きで出力
3:標準入力から名前を取得し、trim()で空白や改行を削除して変数$nameに代入
4:「こんにちは、[入力された名前]さん!」を改行付きで出力
5:「あなたの名前の文字数は次の通りです: [文字数]文字」と文字列の長さを出力
6:「デバッグ情報: 」を改行付きで出力
7:var_dump()を用いて変数$nameの型と値を出力
8:mt_rand()で10から80までのランダムな数値を生成し、変数$ageに代入
9:「あなたの仮の年齢は [年齢]歳です。」と出力
10:if文を使用して変数$ageが18以上かを判定
  □ 18以上の場合、「あなたは成人です。」と出力
  □ 18未満の場合、「あなたは未成年です。」と出力

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

<?php

// ユーザーに名前を入力してもらう
echo "あなたの名前を入力してください: " . PHP_EOL;

/* 【穴埋め問題1】
ここでfgets()とtrim()を使用して、標準入力から名前を取得し変数$nameに代入するコードを書いてください。
*/

// 入力された名前を確認
echo "こんにちは、" . $name . "さん!" . PHP_EOL;

// 文字列の長さを計算する
/* 【穴埋め問題2】
ここでstrlen()を使用して$nameの文字数を計算し、それを出力するコードを書いてください。
*/

// デバッグ用に変数の詳細を出力
echo "デバッグ情報: " . PHP_EOL;
/* 【穴埋め問題3】
ここでvar_dump()を使用して$nameの型と値を表示するコードを書いてください。
*/

// 数値操作例: ランダムな年齢を生成し、ユーザーの年齢として表示する
/* 【穴埋め問題4】
ここでmt_rand()を使用して10から80のランダムな数値を生成し、変数$ageに代入するコードを書いてください。
*/

// 論理演算子と分岐処理を使った簡単なメッセージ
if ($age >= 18) {
    echo "あなたは成人です。" . PHP_EOL;
} else {
    echo "あなたは未成年です。" . PHP_EOL;
}

以上がこの問題の穴埋めコードです。

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。



練習問題の解答と解説

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

<?php

// ユーザーに名前を入力してもらう
echo "あなたの名前を入力してください: " . PHP_EOL;
$name = trim(fgets(STDIN)); // fgets()で入力を受け取り、trim()で空白や改行を削除する

// 入力された名前を確認
echo "こんにちは、" . $name . "さん!" . PHP_EOL;

// 文字列の長さを計算する
echo "あなたの名前の文字数は次の通りです: " . strlen($name) . "文字" . PHP_EOL; // strlen()で文字列の長さを取得する

// デバッグ用に変数の詳細を出力
echo "デバッグ情報: " . PHP_EOL;
var_dump($name); // var_dump()で変数の型と値を表示

// 数値操作例: ランダムな年齢を生成し、ユーザーの年齢として表示する
$age = mt_rand(10, 80); // mt_rand()で10から80の範囲のランダムな数値を生成
echo "あなたの仮の年齢は " . $age . "歳です。" . PHP_EOL;

// 論理演算子と分岐処理を使った簡単なメッセージ
if ($age >= 18) {
    echo "あなたは成人です。" . PHP_EOL;
} else {
    echo "あなたは未成年です。" . PHP_EOL;
}

正解コードの解説

このコードはユーザーから名前を入力してもらい、その名前を使った挨拶を表示したり、文字列やランダムな値の処理を行うプログラムです。

初心者向けに各ブロックで使用されている文法やビルトイン関数を丁寧に解説します。

ユーザーの入力を受け取る

echo "あなたの名前を入力してください: " . PHP_EOL;
$name = trim(fgets(STDIN));
  1. echo
    画面にメッセージを出力します。この場合、「あなたの名前を入力してください:」と表示します。PHP_EOL は改行を意味します。
  2. fgets()
    ユーザーの入力を受け取る関数です。この関数は標準入力(STDIN)からデータを読み込みます。
  3. trim()
    入力された文字列の両端にある空白や改行を削除します。入力データを綺麗に整えるための便利なビルトイン関数です。

挨拶文の表示

echo "こんにちは、" . $name . "さん!" . PHP_EOL;

文字列の連結にドット (.) を使用しています。

$name の値を文字列に埋め込むことで、ユーザー名を含んだ挨拶文を作成しています。

文字列の長さを取得

echo "あなたの名前の文字数は次の通りです: " . strlen($name) . "文字" . PHP_EOL;

strlen()
文字列の長さを取得するビルトイン関数です。この例ではユーザーが入力した名前の文字数を計算して表示します。

デバッグ情報の表示

var_dump($name);

var_dump()
変数の型や値を詳細に表示するデバッグ用のビルトイン関数です。この関数を使うと、データが正しく入力されているかを確認できます。

ランダムな値の生成

$age = mt_rand(10, 80);
echo "あなたの仮の年齢は " . $age . "歳です。" . PHP_EOL;

mt_rand()
指定した範囲内のランダムな整数を生成するビルトイン関数です。この場合、10から80の間の整数が生成されます。仮の年齢として使用しています。

条件分岐

if ($age >= 18) {
    echo "あなたは成人です。" . PHP_EOL;
} else {
    echo "あなたは未成年です。" . PHP_EOL;
}
  • if
    条件に応じて処理を分ける制御構造です。ここでは、ランダムに生成された年齢が18以上の場合は「成人」、それ未満の場合は「未成年」と表示します。
  • 比較演算子 (>=)
    年齢が18以上かどうかを判定しています。

まとめ

このプログラムでは、PHPのビルトイン関数を活用して以下の処理を行いました:

  1. fgets()trim() を使った入力処理。
  2. strlen() で文字列の長さを取得。
  3. var_dump() によるデバッグ。
  4. mt_rand() を使ったランダム値の生成。
  5. 条件分岐による判定。

これらの関数や構文はPHPプログラミングの基礎を学ぶ上で非常に重要です。

これをきっかけに他のビルトイン関数にも挑戦してみてください。

PHPの持つ強力な機能を使いこなし、さらに複雑なプログラムにも挑戦できる力を身につけましょう!

<<前のページ PHP記事一覧 次のページ>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    PHPのテキスト&問題集トップへ戻る
    トップページへ戻る