Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】gettype()関数の使い方

gettype関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

gettype関数は、引数に指定した変数の型を文字列として取得する関数です。この関数は、プログラムのデバッグ時や、変数がどのような種類のデータを持っているかを動的に確認したい場合に非常に役立ちます。引数には、型を調べたい任意の値を指定します。戻り値として、その値の型を表す文字列が返されます。例えば、整数が格納された変数であれば "integer"、文字列であれば "string"、配列であれば "array" といった具体的な文字列が返されます。注意点として、浮動小数点数の場合は "float" ではなく "double" という文字列が返されます。また、オブジェクトの場合はインスタンス化されたクラス名に関わらず、一律で "object" という文字列が返されます。もし特定の型であるかどうかを真偽値で判定したい場合は、is_int()is_string() といった is_* 系の関数を使用する方が、より高速でコードの意図も明確になるため推奨されます。gettype関数は、変数の型を大まかに分類し、その情報をログに出力するなどして把握したい場合に便利な関数です。

構文(syntax)

1<?php
2
3$variable = 123;
4$type = gettype($variable);
5
6echo $type; // "integer"
7
8?>

引数(parameters)

mixed $value

  • mixed $value: 型を取得したい変数や値

戻り値(return)

string

引数として渡された変数の型を文字列で返します。例えば、整数型であれば"integer"、文字列型であれば"string"のような値が返されます。

サンプルコード

PHP gettype関数で変数の型を取得する

1<?php
2
3/**
4 * さまざまな型の変数に対して gettype() 関数を使用し、その結果を表示します。
5 *
6 * gettype() 関数は、指定された変数の型を文字列として返します。
7 * これは、変数の現在の型を確認したい場合に役立ちます。
8 */
9function demonstrateGettype(): void
10{
11    // 整数型の変数
12    $integerVar = 123;
13    // 浮動小数点数型の変数 (gettype() は 'double' を返します)
14    $floatVar = 123.45;
15    // 文字列型の変数
16    $stringVar = "Hello PHP";
17    // 真偽値型の変数
18    $booleanVar = true;
19    // 配列型の変数
20    $arrayVar = [1, 2, 3];
21    // オブジェクト型の変数 (標準クラスのインスタンス)
22    $objectVar = new stdClass();
23    // NULL値の変数
24    $nullVar = null;
25    // リソース型の変数 (ファイルのオープンなど)
26    $resourceVar = fopen('php://memory', 'r');
27
28    echo "--- gettype() 関数の使用例 ---\n";
29
30    // 各変数の型を取得して表示
31    echo "変数値: " . $integerVar . ", 型: " . gettype($integerVar) . "\n";
32    echo "変数値: " . $floatVar . ", 型: " . gettype($floatVar) . "\n";
33    echo "変数値: '" . $stringVar . "', 型: " . gettype($stringVar) . "\n";
34    // boolean型は直接echoすると'1'か空文字列になるため、文字列に変換して表示
35    echo "変数値: " . ($booleanVar ? 'true' : 'false') . ", 型: " . gettype($booleanVar) . "\n";
36    // 配列は直接echoできないため、JSON形式に変換して表示
37    echo "変数値: " . json_encode($arrayVar) . ", 型: " . gettype($arrayVar) . "\n";
38    // オブジェクトはクラス名と型を表示
39    echo "変数値: " . get_class($objectVar) . " (オブジェクト), 型: " . gettype($objectVar) . "\n";
40    // NULL値は '(null)' と表示
41    echo "変数値: (null), 型: " . gettype($nullVar) . "\n";
42    // リソース型は '(resource)' と表示
43    echo "変数値: (resource), 型: " . gettype($resourceVar) . "\n";
44
45    // 使用したリソースを解放します (メモリリーク防止のため重要です)
46    if (is_resource($resourceVar)) {
47        fclose($resourceVar);
48    }
49}
50
51// 関数を実行して、gettype() の動作を確認します
52demonstrateGettype();
53

PHP 8のgettype関数は、指定された変数のデータ型を文字列として取得するために使用されます。この関数は、引数としてmixed $valueを受け取ります。これは、整数、浮動小数点数、文字列、真偽値、配列、オブジェクト、NULL、リソースといった、PHPのあらゆる型の変数を指定できることを意味します。gettype関数は、その変数の型を表す文字列を戻り値として返します。例えば、整数型なら'integer'、浮動小数点数型なら'double'、文字列型なら'string'、真偽値型なら'boolean'、配列型なら'array'、オブジェクト型なら'object'、NULL値なら'NULL'、リソース型なら'resource'といった具体的な文字列が返されます。

サンプルコードでは、これら多岐にわたる型の変数を用意し、それぞれにgettype関数を適用した結果を表示しています。これにより、各変数がPHP内部でどのように型として認識されるか、その挙動を直接確認できます。この関数は、プログラムのデバッグ時や、変数の現在の型に基づいて処理を分岐させる必要がある場合などに、変数の型を正確に把握するために非常に役立つでしょう。

gettype()関数は、変数の型を文字列として確認するデバッグ用途で役立ちますが、厳密な型判定にはis_int()のようなis_*系の関数を使うことを推奨します。例えば浮動小数点数は'double'と返されるなど、戻り値の文字列は固定されていますので、これらを期待した値と比較する際は注意が必要です。また、booleanarrayobjectなどの特定の型は、echoで直接出力すると意図しない表示になるため、サンプルコードのように適切な変換や関数(json_encode()get_class()など)を用いて出力しましょう。ファイルハンドルなどのリソース型を扱う場合は、使用後に必ずfclose()などで解放することが、システムの安定稼働のために非常に重要です。

PHP gettype と JSON 型変換の確認

1<?php
2
3/**
4 * gettype関数とJSONデータの扱い方を示すサンプルコードです。
5 * json_decodeでJSON文字列をデコードした後の変数の型をgettypeで確認します。
6 * システムエンジニアを目指す初心者の方にも理解しやすいよう、様々なJSONの型を例示します。
7 */
8function demonstrateGettypeWithJson(): void
9{
10    // 1. JSONオブジェクトを表す文字列
11    $json_object_string = '{"name": "Alice", "age": 30, "isActive": true}';
12    // 2. JSON配列を表す文字列
13    $json_array_string = '[10, "apple", {"id": 1}]';
14    // 3. JSONの基本データ型を表す文字列
15    $json_number_string = '123.45';
16    $json_boolean_string = 'false';
17    $json_null_string = 'null';
18    // 4. 無効なJSON文字列(パースエラーとなる例)
19    $invalid_json_string = '{key: "value"}';
20
21    echo "--- gettype関数とJSONの型の確認 ---" . PHP_EOL;
22
23    // --- JSONオブジェクトのデコード ---
24    // デフォルトではPHPのオブジェクト(stdClass)に変換されます。
25    $decoded_object = json_decode($json_object_string);
26    echo "元JSON (オブジェクト): " . $json_object_string . PHP_EOL;
27    echo "  gettype結果: " . gettype($decoded_object) . PHP_EOL . PHP_EOL; // "object"
28
29    // --- JSON配列のデコード ---
30    // PHPの配列に変換されます。
31    $decoded_array = json_decode($json_array_string);
32    echo "元JSON (配列): " . $json_array_string . PHP_EOL;
33    echo "  gettype結果: " . gettype($decoded_array) . PHP_EOL . PHP_EOL; // "array"
34
35    // --- JSONオブジェクトを連想配列としてデコード ---
36    // json_decodeの第二引数にtrueを指定すると、オブジェクトが連想配列に変換されます。
37    $decoded_assoc_array = json_decode($json_object_string, true);
38    echo "元JSON (オブジェクトを連想配列でデコード): " . $json_object_string . PHP_EOL;
39    echo "  gettype結果: " . gettype($decoded_assoc_array) . PHP_EOL . PHP_EOL; // "array"
40
41    // --- JSON数値文字列のデコード ---
42    // PHPの浮動小数点数(double)または整数(integer)に変換されます。
43    $decoded_number = json_decode($json_number_string);
44    echo "元JSON (数値): " . $json_number_string . PHP_EOL;
45    echo "  gettype結果: " . gettype($decoded_number) . PHP_EOL . PHP_EOL; // "double" (小数点があるため)
46
47    // --- JSON真偽値文字列のデコード ---
48    // PHPの真偽値(boolean)に変換されます。
49    $decoded_boolean = json_decode($json_boolean_string);
50    echo "元JSON (真偽値): " . $json_boolean_string . PHP_EOL;
51    echo "  gettype結果: " . gettype($decoded_boolean) . PHP_EOL . PHP_EOL; // "boolean"
52
53    // --- JSON null文字列のデコード ---
54    // PHPのNULLに変換されます。
55    $decoded_null = json_decode($json_null_string);
56    echo "元JSON (null): " . $json_null_string . PHP_EOL;
57    echo "  gettype結果: " . gettype($decoded_null) . PHP_EOL . PHP_EOL; // "NULL"
58
59    // --- 無効なJSON文字列のデコード ---
60    // json_decodeはパースに失敗すると通常nullを返します。
61    $decoded_invalid = json_decode($invalid_json_string);
62    echo "元JSON (無効な形式): " . $invalid_json_string . PHP_EOL;
63    echo "  gettype結果: " . gettype($decoded_invalid) . PHP_EOL . PHP_EOL; // "NULL"
64    // 実際にエラーが起きたかどうかは json_last_error() や json_last_error_msg() で確認できます。
65}
66
67// 関数を実行して結果を表示
68demonstrateGettypeWithJson();
69
70?>

このサンプルコードは、PHPのgettype関数を使って、JSONデータをデコードした後の変数の型がどのように識別されるかをシステムエンジニアを目指す初心者の方にわかりやすく示しています。

gettype関数は、引数として渡された任意の型の値(mixed $value)を受け取り、その型を表す文字列(string)を戻り値として返します。例えば、整数なら"integer"、文字列なら"string"といった結果を得られます。

コードでは、様々な形式のJSON文字列をjson_decode関数でPHPのデータ型に変換し、その変換後の変数に対してgettypeを実行して型を確認しています。 JSONのオブジェクトは、デフォルトではPHPのobject型(標準クラスstdClassのインスタンス)に、json_decodeの第二引数にtrueを指定した場合はPHPのarray型(連想配列)に変換されることがわかります。 JSONの配列はPHPのarray型に、数値はdouble型(またはinteger型)に、真偽値はboolean型に、nullはPHPのNULL型にそれぞれ変換されます。 また、無効なJSON文字列をデコードしようとした場合、json_decodeはエラーとしてnullを返すため、gettypeの結果もNULLとなります。

このように、gettype関数はデータ連携で受け取るJSONデータをPHPで処理する際に、意図した型に正しく変換されているかを確認するための基本的な手段として役立ちます。

PHPのgettype関数でJSONデコード後の型を確認する際、元のJSONの型とPHPの型が必ずしも一致しないことにご注意ください。特にJSONオブジェクトは、json_decodeの第二引数にtrueを渡さないとstdClassオブジェクト(object型)になりますが、trueを渡すと連想配列(array型)に変換されます。JSON配列はPHPの配列(array型)です。また、json_decodeが無効なJSON文字列を受け取った場合、nullを返すため、gettypeの結果はNULLとなります。プログラムの安全性を保つため、デコード後は必ずjson_last_error()関数でエラーの有無を確認する習慣をつけましょう。

PHP gettype で変数の型を文字列として取得する

1<?php
2
3/**
4 * PHPのgettype関数を使用して、様々な変数の型を文字列として取得し表示するサンプルコードです。
5 * gettype関数は、引数として渡された変数の型を示す文字列を返します。
6 *
7 * システムエンジニアを目指す初心者の方にも分かりやすいように、コメントを付けています。
8 */
9function demonstrateGettype(): void
10{
11    // 様々な型の変数を定義します。
12    // gettype関数がどのような文字列を返すかを確認しましょう。
13    $integerVar = 123;                  // 整数型 (integer)
14    $floatVar = 123.45;                 // 浮動小数点型 (double)
15    $stringVar = "Hello PHP";           // 文字列型 (string)
16    $booleanVar = true;                 // 真偽値型 (boolean)
17    $arrayVar = [1, 2, 3];              // 配列型 (array)
18    $nullVar = null;                    // NULL型 (NULL)
19    $objectVar = new stdClass();        // オブジェクト型 (object)
20    $resourceVar = fopen('php://memory', 'r'); // リソース型 (resource)
21
22    echo "--- gettype() 関数による変数の型判定 ---\n";
23    echo "----------------------------------------\n";
24
25    // 各変数の型をgettype関数で取得し、その結果(文字列)を表示します。
26    echo "\$integerVar (値: {$integerVar})\t\t: " . gettype($integerVar) . "\n";
27    echo "\$floatVar (値: {$floatVar})\t\t: " . gettype($floatVar) . "\n";
28    echo "\$stringVar (値: \"{$stringVar}\")\t: " . gettype($stringVar) . "\n";
29    echo "\$booleanVar (値: " . ($booleanVar ? 'true' : 'false') . ")\t: " . gettype($booleanVar) . "\n";
30    echo "\$arrayVar (値: [1,2,3])\t\t: " . gettype($arrayVar) . "\n";
31    echo "\$nullVar (値: null)\t\t: " . gettype($nullVar) . "\n";
32    echo "\$objectVar (値: stdClassオブジェクト)\t: " . gettype($objectVar) . "\n";
33    echo "\$resourceVar (値: resource)\t\t: " . gettype($resourceVar) . "\n";
34
35    echo "----------------------------------------\n";
36
37    // リソースは使用後に閉じることが推奨されます。
38    fclose($resourceVar);
39}
40
41// 上記で定義した関数を実行します。
42demonstrateGettype();
43
44?>

PHP 8のgettype関数は、引数として渡された変数のデータ型を文字列として取得するための標準関数です。システム開発において、プログラムが処理する変数の型を正確に把握することは非常に重要であり、この関数はその目的で活用されます。

引数$valueには、整数、浮動小数点数、文字列、真偽値、配列、NULL、オブジェクト、リソースといった、PHPが扱うあらゆる型の変数を指定することができます。gettype関数は、これらの変数の型を判定し、その型を示す具体的な文字列を戻り値として返します。例えば、整数型の場合は「integer」、浮動小数点型の場合は「double」、文字列型の場合は「string」、真偽値型の場合は「boolean」、配列型の場合は「array」、NULL値の場合は「NULL」、オブジェクトの場合は「object」、リソースの場合は「resource」といった文字列が返されます。

このサンプルコードでは、様々なデータ型の変数を定義し、それぞれにgettype関数を適用して、その結果(型の名前を示す文字列)を画面に表示しています。これにより、各データ型がgettype関数によってどのように識別され、どのような文字列が返されるかを具体的に確認できます。プログラムのデバッグ時や、変数の型に応じた条件分岐処理を実装する際など、変数の型を動的に判定したい場面でgettype関数は非常に役立ちます。

gettype関数が返す文字列は、特に浮動小数点型がdoubleとなるなど、PHPの一般的な型名表記と異なる場合がある点に注意が必要です。変数の型を厳密にチェックして条件分岐を行う際は、is_int()is_string()のようなis_*関数群を使用する方が安全で、一般的に推奨されます。gettypeは主にデバッグ時や変数の情報表示に役立つツールとして理解しておくと良いでしょう。また、サンプルコードのようにリソース型を扱う際は、使用後に必ずfclose()などで適切に閉じ、リソースを解放することが重要です。

PHP gettype()でオブジェクト型を判定する

1<?php
2
3/**
4 * PHPのgettype()関数の基本的な使い方をデモンストレーションします。
5 * 特に、様々なデータ型(特にオブジェクト型)がどのように判定されるかを示します。
6 *
7 * @return void
8 */
9function demonstrateGettypeUsage(): void
10{
11    echo "--- PHP gettype() 関数のデモンストレーション ---" . PHP_EOL;
12    echo PHP_EOL; // 空行で区切りを設ける
13
14    // オブジェクト型のデモンストレーション用にシンプルなクラスを定義します。
15    // gettype()関数はクラス名ではなく「object」という文字列を返します。
16    class SampleObject
17    {
18        public string $propertyName = "オブジェクトプロパティ";
19    }
20
21    // 様々な型の変数を準備します。
22    $integerValue = 123;                  // 整数型
23    $floatValue = 12.34;                  // 浮動小数点数型
24    $stringValue = "Hello, PHP!";         // 文字列型
25    $booleanValue = true;                 // 真偽値型
26    $nullValue = null;                    // NULL型
27    $arrayValue = [1, 2, 3];              // 配列型
28    $objectValue = new SampleObject();    // 定義したクラスのインスタンス(オブジェクト型)
29    $resourceValue = fopen(__FILE__, 'r'); // リソース型 (ファイルポインタ)
30
31    // 各変数の型をgettype()関数で取得し、その結果を表示します。
32    echo "変数 \$integerValue (値: {$integerValue}) の型: " . gettype($integerValue) . PHP_EOL;
33    echo "変数 \$floatValue (値: {$floatValue}) の型: " . gettype($floatValue) . PHP_EOL;
34    echo "変数 \$stringValue (値: '{$stringValue}') の型: " . gettype($stringValue) . PHP_EOL;
35    echo "変数 \$booleanValue (値: " . ($booleanValue ? 'true' : 'false') . ") の型: " . gettype($booleanValue) . PHP_EOL;
36    echo "変数 \$nullValue (値: null) の型: " . gettype($nullValue) . PHP_EOL;
37    echo "変数 \$arrayValue (配列) の型: " . gettype($arrayValue) . PHP_EOL;
38    echo "変数 \$objectValue (SampleObjectのインスタンス) の型: " . gettype($objectValue) . PHP_EOL; // キーワード 'object' に関連
39    echo "変数 \$resourceValue (ファイルリソース) の型: " . gettype($resourceValue) . PHP_EOL;
40
41    // リソース型の場合、使用後に閉じるのが良い習慣です。
42    // PHPはスクリプト終了時に自動でリソースを解放しますが、明示的に閉じることでメモリ管理が向上します。
43    if (is_resource($resourceValue)) {
44        fclose($resourceValue);
45    }
46}
47
48// 定義した関数を実行し、gettype()の動作を確認します。
49demonstrateGettypeUsage();
50
51?>

PHPのgettype()関数は、変数に格納されている値のデータ型を文字列として取得するために使用されます。この関数は引数として任意の型の値(mixed $value)を受け取り、その型を示す文字列(string)を戻り値として返します。

例えば、整数型の変数には「integer」、文字列型には「string」、真偽値型には「boolean」といった結果が返されます。特に、独自のクラスをインスタンス化したオブジェクト型の変数に対してgettype()を使用した場合、そのオブジェクトがどのクラスに属していても、戻り値は常に「object」という文字列になります。これは、gettype()が変数のより一般的な型分類を行うためです。

このサンプルコードでは、整数、浮動小数点数、文字列、真偽値、NULL、配列、リソースといった様々なデータ型に加え、新たに定義したSampleObjectクラスのインスタンス(オブジェクト)を作成し、それぞれの変数にgettype()関数を適用しています。これにより、各データ型、特にオブジェクト型が「object」として識別される挙動を具体的に確認できます。gettype()はプログラムのデバッグや、変数の型に応じた処理の分岐が必要な際に役立つ関数です。

PHPのgettype()関数は、変数のデータ型を示す文字列を返しますが、特にオブジェクトの場合、具体的なクラス名ではなく「object」という汎用的な文字列を返します。特定のクラスのインスタンスであるかを厳密に確認したい場合は、instanceof演算子を使用すると、より正確な判定が可能です。また、数値型や文字列型などの厳密な型チェックには、is_string()is_int()といったis_*関数群の利用も検討してください。サンプルコードにあるリソース型(例: ファイルポインタ)は、使用後にfclose()で明示的に閉じる習慣をつけると、メモリ管理がより確実になり、堅牢なコードの記述に繋がります。

関連コンテンツ

関連IT用語

関連プログラミング言語