【PHP】Lesson1-3:データ型とキャストを理解しよう

ながみえ

一つ前のレッスンでは 変数と定数 について学習しました。

今回は データ型とキャスト について見ていきましょう。

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

<<前のページ

学習記事一覧

次のページ>>

PHPデータ型の基礎|初心者でもわかる種類と特徴

PHPで扱う「データ型」と「キャスト(型変換)」の基本を、初心者向けにわかりやすく解説します。

本記事を読むことで、数値や文字列などさまざまなデータを適切に扱い、必要に応じて型を変換する方法が身につきます。

ぜひ記事を読み進めて、PHPの基礎力をアップさせましょう!

データ型とは何か?|PHPでよく使う基本的なデータ型一覧

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

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

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

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

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

データ型説明
整数型(int)小数点を含まない数値123, -7
浮動小数点型(float/double)小数点を含む数値3.14, -0.001
文字列型(string)文字や記号の並び"Hello", 'PHP'
論理値型(bool)真偽値、trueまたはfalsetrue, false
配列型(array)複数の値をまとめて格納[1, 2, 3], ["a" => "Apple"]
null型(null)値が存在しないことを表す特別な型null

先ほどの説明で「プログラムはそれが何を表すデータなのか認識できない」と書きましたが、実際はPHPは 動的型付け言語 なので変数宣言時に型が推測され、自動で設定されます。

$var = 123;		// 自動で整数型と認識される
$var = "123";	// 自動で整数型と認識される
$var = "こんにちは";	// 自動で文字列型と認識される
$var = null;	// 自動でnull型と認識される

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

キャスト(型変換)とは何か?|意味と使用コード例紹介

キャストとは値の前にデータ型を指定して書くことで、明示的に型変換することを指します。

例えば「123」を文字列として””を付けて書いても、直前に(int)と書いていれば数値として扱われます。

$intValue = (int) "123";		// 文字列を整数型に変換 => 変数には「123」が格納される
$floatValue = (float) "3.14";	// 文字列を浮動小数点型に変換 => 変数には「3.14」が格納される
$stringValue = (string) 123;	// 整数を文字列型に変換 => 変数には「"123"」が格納される
$error = (int)"hello";			// 数値に変換できない文字列をキャスト => 変数には「0」が格納される

このようにキャストを使用することで、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によるデータ取得: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をコピーしました