【PHP】レッスン1-03:データ型とキャストを理解しよう

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

この記事で学べる知識:データ型とキャスト

この記事の練習問題を解くために必要な知識:
PHPタグ、入力と出力、コメントの書き方、変数と定数、データ型とキャスト、算術演算子、文字列、文字列の連結と埋め込み、乱数生成

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

PHPの「データ型とキャスト」とは

この章ではPHPにおける「データ型とキャスト」の意味や使い方を学習します。用語の解説が不要な方はここをクリックして練習問題へ飛びましょう。




PHPでは、プログラム内で扱うデータにはさまざまな「型」があります。

この型を理解することは、プログラムの動作を正確に制御するうえで非常に重要です。

また、PHPは柔軟な型変換機能を持っていますが、状況に応じて明示的に型を変換する「キャスト」を使うことで、プログラムの動作をさらに細かく制御できます。

本節ではデータ型の種類とキャストの方法について学びます。

データ型とは?

データ型とは、そのデータが何であるかを”プログラムが”理解するために定義するものです。

例えば「100」というデータを見てみましょう。

人間ならこれが「数値」であるとすぐに認識できますが、プログラムはこれが「数値」なのか「文字列」なのか、指定されなければ認識できません。

そこで、プログラム上の全てのデータには、それが何を表すデータなのかを定義してやる必要があります。

PHPには以下の基本的なデータ型があります。

代表的なデータ型

  1. 整数型 (integer): 整数を表します。例: 10, -5
  2. 浮動小数点型 (float): 小数点を含む数値を表します。例: 3.14, -2.5
  3. 文字列型 (string): テキストデータを表します。例: "Hello, World!", 'PHP'"123"
  4. ブール型 (boolean): 真偽値を表します。例: true, false
  5. 配列型 (array): 複数の値を格納します。例: [1, 2, 3]
  6. NULL型: 値が存在しないことを示します。例: null

先ほどの説明でプログラムはそれが何を表すデータなのか認識できない、と書きましたが、実際はPHPでは変数を宣言する際に型を推測して自動で設定する機能があります。

しかし、型を意識することで予期せぬエラーを防ぐことができます。

キャストとは?

キャストとはデータ型を明示的に変換することを指します。

PHPでは以下のようにキャストを行うことができます。

$intValue = (int) "123";      // 文字列を整数型に変換
$floatValue = (float) "3.14"; // 文字列を浮動小数点型に変換
$stringValue = (string) 123;  // 整数を文字列型に変換

このようにキャストを使用することで、PHPが自動で行う型変換に頼らず、明示的に型を指定できます。

使用例

以下はデータ型とキャストを使用した具体的な例です。

<?php
// データ型の例
$integer = 10;  // 整数型
$float = 3.14;  // 浮動小数点型
$string = "100";  // 文字列型

// キャストの例
$castToInt = (int) $string;  // 文字列を整数型にキャスト
$castToFloat = (float) $string;  // 文字列を浮動小数点型にキャスト

// fgets(STDIN) で入力を取得する例
echo "数値を入力してください: ";
$input = fgets(STDIN);  // 標準入力からデータを取得(文字列型になる)
$castInput = (int) $input;  // 文字列型を整数型にキャスト

// 結果を表示
echo "整数型: " . $integer . PHP_EOL;  // 整数型: 10
echo "浮動小数点型: " . $float . PHP_EOL;  // 浮動小数点型: 3.14
echo "文字列型を整数型にキャスト: " . $castToInt . PHP_EOL;  // 文字列型を整数型にキャスト: 100
echo "文字列型を浮動小数点型にキャスト: " . $castToFloat . PHP_EOL;  // 文字列型を浮動小数点型にキャスト: 100.0
echo "入力値(文字列型): " . $input . PHP_EOL;  // 入力値(そのまま文字列型)
echo "入力値をキャストした結果(整数型): " . $castInput . PHP_EOL;  // 入力値をキャストした結果
  • fgets(STDIN)によるデータ取得:fgets(STDIN)は標準入力からデータを取得しますが、取得されるデータは必ず文字列型です。たとえ数字を入力しても文字列型として扱われます。
  • キャストによる型変換:取得したデータを数値として使用する場合、明示的にキャストする必要があります。上記の例では、(int)を使って文字列型を整数型に変換しました。
  • キャストの必要性:キャストを行わずに文字列型のまま演算を行おうとすると、意図しない結果を招くことがあります。明示的にキャストを行うことで安全性が向上します。

まとめ

データ型とキャストはPHPプログラミングの基本でありながら非常に重要な概念です。

正しいデータ型を理解し、適切なキャストを使用することでプログラムの動作を予測可能で安全なものにできます。

この基礎をしっかり身につけて、次の章でさらに高度なPHPの機能を学びましょう。

データ型とキャストの練習問題:データ型変換を体験しよう

PHPの基本的なデータ型とキャストを学びましょう。

標準入力を利用して、入力されたデータを異なるデータ型(整数型と浮動小数点型)で表示するプログラムを作成してください。

この練習を通じて、PHPでの型変換の仕組みを理解しましょう。

この問題の要件

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

  1. 変数の宣言と初期化:
    • $input, $intValue, $floatValueという変数を宣言し、初期値としてnullを設定すること。
  2. データの入力:
    • 標準入力から文字列型のデータを受け取ること。
  3. 型変換(キャスト):
    • 入力されたデータを整数型(int)浮動小数点型(float)にキャストすること。
  4. 結果の表示:
    • 元の文字列型のデータを表示すること。
    • 整数型にキャストした結果を表示すること。
    • 浮動小数点型にキャストした結果を表示すること。

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

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

数字を入力してください: 123.45
入力された値: 123.45
整数型にキャストした値: 123
浮動小数点型にキャストした値: 123.45

この問題を解くヒント

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

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

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

1:変数$input, $intValue, $floatValueを初期値nullで定義
2:「数字を入力してください: 」を出力
3:標準入力からデータを受け取り、変数$inputに代入
4:変数$inputを(int)で整数型にキャストし、変数$intValueに代入
5:変数$inputを(float)で浮動小数点型にキャストし、変数$floatValueに代入
6:「入力された値: 」を出力
7:元の文字列型の値$inputを出力
8:「整数型にキャストした値: 」を出力
9:整数型の値$intValueを出力
10:「浮動小数点型にキャストした値: 」を出力
11:浮動小数点型の値$floatValueを出力

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

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

<?php
// 変数の定義(初期値にnullを設定)
$input = null;
$intValue = null;
$floatValue = null;

// 入力を促すメッセージ
echo "数字を入力してください: ";
echo PHP_EOL;

// 標準入力からデータを受け取る(文字列型として取得されます)
/*【穴埋め問題1】
ここで標準入力から文字列を取得し、変数$inputに代入するコードを書いてください。
*/

// 入力データを整数型にキャスト
/*【穴埋め問題2】
ここで$inputを整数型にキャストして、変数$intValueに代入するコードを書いてください。
*/

// 入力データを浮動小数点型にキャスト
/*【穴埋め問題3】
ここで$inputを浮動小数点型にキャストして、変数$floatValueに代入するコードを書いてください。
*/

// 各データ型の結果を表示
echo "入力された値: ";
echo $input . PHP_EOL; // 元の文字列型の値を表示
echo "整数型にキャストした値: ";
echo $intValue . PHP_EOL; // 整数型の値を表示
echo "浮動小数点型にキャストした値: ";
echo $floatValue . PHP_EOL; // 浮動小数点型の値を表示

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

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



練習問題の解答と解説

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

正解コードの例

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

<?php
// 変数の定義(初期値にnullを設定)
$input = null;
$intValue = null;
$floatValue = null;

// 入力を促すメッセージ
echo "数字を入力してください: ";
echo PHP_EOL;

// 標準入力からデータを受け取る(文字列型として取得されます)
$input = fgets(STDIN);

// 入力データを整数型にキャスト
$intValue = (int) $input; // (int)で文字列を整数型に変換
// 入力データを浮動小数点型にキャスト
$floatValue = (float) $input; // (float)で文字列を浮動小数点型に変換

// 各データ型の結果を表示
echo "入力された値: ";
echo $input . PHP_EOL; // 元の文字列型の値を表示
echo "整数型にキャストした値: ";
echo $intValue . PHP_EOL; // 整数型の値を表示
echo "浮動小数点型にキャストした値: ";
echo $floatValue . PHP_EOL; // 浮動小数点型の値を表示

正解コードの解説

このPHPコードは、標準入力から値を受け取り、その値を異なるデータ型にキャストして表示するプログラムです。

このコードを通じてPHPの「データ型とキャスト」の基礎を学ぶことができます。

以下、コードをブロックごとに分けて説明します。

変数の定義

$input = null;
$intValue = null;
$floatValue = null;
  1. 説明:
    • $input, $intValue, $floatValueという3つの変数を宣言しています。
    • 初期値としてnullを設定しています。これによりプログラム開始時に変数が未定義状態でないことが保証されます。
  2. 学習ポイント:
    • PHPで変数を使うときは$をつけて宣言します。
    • nullは「値がない」ことを表す特別な値です。

入力を促すメッセージ

echo "数字を入力してください: ";
  1. 説明:
    • echoを使って文字列「数字を入力してください: 」を出力します。
    • ユーザーにデータ入力を促すメッセージを表示します。
  2. 学習ポイント:
    • echoはPHPで文字列や値を表示するために使われます。

標準入力からデータを受け取る

$input = fgets(STDIN);
  1. 説明:
    • fgets(STDIN)は、標準入力から1行の文字列を取得します。
    • 入力されたデータは、必ず文字列型として取得されます。
    • 取得した値を$input変数に代入します。
  2. 学習ポイント:
    • fgets()はデータを取得するPHPの標準関数です。
    • 標準入力からの値は、たとえ数字であっても文字列型になります。

データ型のキャスト(整数型)

$intValue = (int) $input;
  1. 説明:
    • (int)を使って、$input(文字列型)を整数型に変換しています。
    • キャストすることで、入力値を数値として利用できるようになります。
  2. 学習ポイント:
    • (int)はキャスト演算子で、データ型を明示的に整数型に変換します。

データ型のキャスト(浮動小数点型)

$floatValue = (float) $input;
  1. 説明:
    • (float)を使って、$input(文字列型)を浮動小数点型に変換しています。
    • 浮動小数点型は小数を含む数値を扱うデータ型です。
  2. 学習ポイント:
    • (float)もキャスト演算子で、データ型を浮動小数点型に変換します。

結果の表示

echo "入力された値: ";
echo $input . PHP_EOL;
echo "整数型にキャストした値: ";
echo $intValue . PHP_EOL;
echo "浮動小数点型にキャストした値: ";
echo $floatValue . PHP_EOL;
  1. 説明:
    • echoを使って各変数の値を表示しています。
    • PHP_EOLは改行を表す定数で、OSに依存しない改行を挿入します。
  2. 学習ポイント:
    • キャストの結果を確認することで、データ型の変換が正しく行われたかを確認できます。
<<前のページ PHP記事一覧 次のページ>>

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

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

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






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