MENU

【PHP】Lesson1-3:データ型とキャストの基礎を完全マスターしよう

tggaa478@yahoo.co.jp

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

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

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

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

Lesson1:基礎文法編
 ・Lesson1-1:PHP学習の入り口|初めてコードを書いてみよう
 ・Lesson1-2:変数と定数を理解しよう
 ・Lesson1-3:データ型とキャストを理解しよう ◁今回はココ
 ・Lesson1-4:四則演算をしよう
 ・Lesson1-5:文字列を理解しよう
 ・Lesson1-6:文字列の連結と埋め込みを理解しよう
 ・Lesson1-7:乱数を生成しよう
 ・確認問題1-1:ランダムパスワードを生成しよう
Lesson2:制御構造編
Lesson3:関数編
Lesson4:データ構造編
Lesson5:クラス

<<前のページ

学習記事一覧

次のページ>>

PHPのデータ型とは?初心者向けに基本から解説

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

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

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

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

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

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のキャスト(型変換)とは?使い方と注意点を学ぼう

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

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の基本的なデータ型とキャストを学びましょう。

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

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

この演習の要件

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

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

ただし、以下のような実行結果となること。

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

解き方のヒント

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

Q
ヒント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を出力

Q
ヒント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; // 浮動小数点型の値を表示

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

演習問題の答え合わせ

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
<?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; // 浮動小数点型の値を表示
Q
正解コードの解説

コードをブロックごとに分割して解説します。

変数の定義

$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学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました