【PHP8.x】settype関数の使い方

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

作成日: 更新日:

基本的な使い方

『settype関数は、指定した変数の型を別の型に変換する関数です。第一引数に型を変更したい変数を、第二引数に変更後の型を文字列で指定して使用します。指定できる型名には "boolean"、"integer"、"float"、"string"、"array"、"object"、"null" などがあります。この関数の最大の特徴は、引数で渡された変数そのものを直接変更する点にあります。例えば、文字列 "123" を持つ変数に対して settype() を使って "integer" を指定すると、元の変数は数値の 123 を保持する整数型の変数に変わります。これは、(int)$var のような型キャストとは異なります。型キャストは元の変数を変更せず、一時的に型が変換された値を返すだけですが、settype関数は変数自体を永続的に書き換えます。この操作が成功した場合は true を、失敗した場合は false を返します。変数の型を意図的に変更したい場合に役立ちますが、元の値が失われる破壊的な操作であるため、使用する際には注意が必要です。

構文(syntax)

1<?php
2
3// settype(mixed &$var, string $type): bool
4
5$data = "2024"; // string
6
7// 変数 $data の型を integer に変更する
8$result = settype($data, "integer");
9
10var_dump($data);   // int(2024)
11var_dump($result); // bool(true)

引数(parameters)

mixed &$var, string $type
  • mixed &$var: 型を変更したい変数を参照渡しで指定します
  • string $type: 変数に設定したい型名を文字列で指定します ('integer', 'double', 'string', 'array', 'object', 'null', 'boolean')

戻り値(return)

bool

変数の型変換が成功したかどうかを示します。成功した場合はtrue、失敗した場合はfalseを返します。

サンプルコード

PHP settype 関数で変数の型を変更する

1<?php
2
3/**
4 * settype() 関数の基本的な使用方法を示すサンプルコードです。
5 * 変数の型を動的に変更する方法を理解できます。
6 */
7function demonstrateSettypeUsage(): void
8{
9    echo "--- settype() 関数のデモンストレーション ---" . PHP_EOL;
10
11    // 1. 整数を文字列に変換する例
12    $value = 123;
13    echo "元の値: " . $value . ", 型: " . gettype($value) . PHP_EOL;
14    // settype() は参照渡しで変数を変更し、成功時に true を返します
15    if (settype($value, 'string')) {
16        echo "=> 'string' へ変換成功!" . PHP_EOL;
17        echo "変換後の値: " . $value . ", 型: " . gettype($value) . PHP_EOL;
18    } else {
19        echo "=> 'string' へ変換失敗。" . PHP_EOL;
20    }
21    echo PHP_EOL;
22
23    // 2. 文字列を整数に変換する例
24    $value = "456abc"; // 数字部分のみが変換されます
25    echo "元の値: " . $value . ", 型: " . gettype($value) . PHP_EOL;
26    if (settype($value, 'integer')) {
27        echo "=> 'integer' へ変換成功!" . PHP_EOL;
28        echo "変換後の値: " . $value . ", 型: " . gettype($value) . PHP_EOL;
29    } else {
30        echo "=> 'integer' へ変換失敗。" . PHP_EOL;
31    }
32    echo PHP_EOL;
33
34    // 3. 浮動小数点数をブール値に変換する例
35    $value = 0.0; // 0.0 は false に変換されます (PHPの型変換ルール)
36    echo "元の値: " . $value . ", 型: " . gettype($value) . PHP_EOL;
37    if (settype($value, 'boolean')) {
38        echo "=> 'boolean' へ変換成功!" . PHP_EOL;
39        // ブール値は直接出力すると '1' (true) または空文字列 (false) になるため、明示的に表示
40        echo "変換後の値: " . ($value ? 'true' : 'false') . ", 型: " . gettype($value) . PHP_EOL;
41    } else {
42        echo "=> 'boolean' へ変換失敗。" . PHP_EOL;
43    }
44    echo PHP_EOL;
45
46    // 4. 無効な型への変換を試みる例 (失敗します)
47    $value = "hello";
48    echo "元の値: " . $value . ", 型: " . gettype($value) . PHP_EOL;
49    if (settype($value, 'invalid_type')) { // 'invalid_type' はPHPが認識しない型です
50        echo "=> 'invalid_type' へ変換成功!" . PHP_EOL;
51        echo "変換後の値: " . $value . ", 型: " . gettype($value) . PHP_EOL;
52    } else {
53        echo "=> 'invalid_type' へ変換失敗。変数型は変更されません。" . PHP_EOL;
54        echo "現在の値: " . $value . ", 型: " . gettype($value) . PHP_EOL;
55    }
56    echo PHP_EOL;
57}
58
59// サンプル関数の実行
60demonstrateSettypeUsage();

PHPのsettype関数は、変数のデータ型をプログラムの実行中に動的に変更するために使用されます。これは、異なるデータ型間で値を変換する必要がある場合に大変便利です。

この関数は、最初の引数に型を変更したい変数を参照渡しで受け取ります。そのため、関数が実行されると元の変数の型と値が直接更新されます。二番目の引数には、'string'、'integer'、'boolean'、'float'、'array'、'object'、'null'など、変換したい型名を文字列で指定します。型変換が成功した場合はtrueを、失敗した場合はfalseを戻り値として返します。

サンプルコードでは、具体的な変換例が示されています。例えば、整数123を文字列に、文字列"456abc"を整数456に、浮動小数点数0.0をブール値のfalseに変換しています。PHPの型変換ルールに基づいて変換が行われるため、文字列から整数への変換では数字部分のみが抽出されます。また、指定された型名がPHPに認識されない無効なものである場合は変換が失敗し、変数の型は変更されずにfalseが返されるため、戻り値を確認して処理の成否を適切に判断することが重要です。

settype関数は、引数で渡された変数の型を直接変更する(参照渡し)機能を持つため、元の変数の値が上書きされる点に注意が必要です。変換の成否は、戻り値のブール値で必ず確認するようにしてください。PHPの型変換ルールに基づき、文字列から数値への変換では先頭の数字部分のみが認識されることや、特定の数値(0や0.0など)がブール値に変換される際の挙動を理解しておく必要があります。認識されない型名を指定した場合は変換に失敗し、変数は変更されません。意図しない型変換による予期せぬ問題を防ぐため、この関数の特性とPHPの型変換ルールをよく理解して利用してください。より厳密な型制御が必要な場合は、キャストなどの利用も検討しましょう。

関連コンテンツ

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