【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()関数でエラーの有無を確認する習慣をつけましょう。

関連コンテンツ

【PHP8.x】gettype関数の使い方 | いっしー@Webエンジニア