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

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

作成日: 更新日:

基本的な使い方

intval関数は、指定された変数の整数としての値を取得する関数です。この関数は、様々なデータ型の値を整数型に変換するために使用され、特に、文字列で表現された数値や、浮動小数点数型の値を整数に変換したい場合に役立ちます。

この関数は主に二つの引数を取ります。一つ目の引数 value は、整数に変換したい任意の型の値です。二つ目のオプション引数 base は、value が文字列の場合に、その文字列が何進数で表現されているかを指定します。base を指定しない場合、PHPは文字列の形式から自動的に基数を判断しようとします(例: 0x は16進数、0b は2進数)。

変換の際、浮動小数点数は小数点以下が切り捨てられ、常に0方向へ丸められます。例えば、3.93 に、-3.9-3 になります。文字列が数値から始まる場合、その数値部分だけが抽出されて整数に変換されます。例えば、"123abc"123 になりますが、"abc123" のように数値以外から始まる文字列は 0 に変換されます。真偽値の true1 に、false0 に変換されます。

PHP 8以降では、数値ではない文字列を変換しようとすると、Noticeが発生する場合があるため注意が必要ですが、この関数はプログラム内で安全に整数値を取り扱うための基本的なツールとして広く利用されています。

構文(syntax)

1<?php
2intval(mixed $value, int $base = 10): int
3?>

引数(parameters)

mixed $value, int $base = 10

PHP:

  • mixed $value: 整数に変換したい値。整数、浮動小数点数、文字列、ブーリアン、NULLなど、様々な型を指定できます。
  • int $base = 10: 値を解釈する基数(進数)を指定します。デフォルトは10進数です。2から36までの整数を指定できます。

戻り値(return)

int

引数として渡された値を整数型として解釈し、その整数値を返します。

サンプルコード

PHPのintval関数で小数点以下を整数に変換する

1<?php
2
3/**
4 * intval関数を使用して浮動小数点数を整数に変換するサンプルコード。
5 * intvalは、小数点以下を切り捨てて(ゼロ方向へ丸めて)整数値を返します。
6 */
7
8// 変換対象となる浮動小数点数の定義
9$positiveFloat = 3.14159;
10$largePositiveFloat = 99.999;
11$negativeFloat = -5.7;
12$zeroFloat = 0.0;
13$integerLikeFloat = 10.0;
14
15echo "元の浮動小数点数: " . $positiveFloat . PHP_EOL;
16echo "intvalでの変換結果: " . intval($positiveFloat) . PHP_EOL . PHP_EOL; // 出力: 3
17
18echo "元の浮動小数点数: " . $largePositiveFloat . PHP_EOL;
19echo "intvalでの変換結果: " . intval($largePositiveFloat) . PHP_EOL . PHP_EOL; // 出力: 99
20
21echo "元の浮動小数点数: " . $negativeFloat . PHP_EOL;
22echo "intvalでの変換結果: " . intval($negativeFloat) . PHP_EOL . PHP_EOL; // 出力: -5 (負の値でも小数点以下は切り捨てられます)
23
24echo "元の浮動小数点数: " . $zeroFloat . PHP_EOL;
25echo "intvalでの変換結果: " . intval($zeroFloat) . PHP_EOL . PHP_EOL; // 出力: 0
26
27echo "元の浮動小数点数: " . $integerLikeFloat . PHP_EOL;
28echo "intvalでの変換結果: " . intval($integerLikeFloat) . PHP_EOL . PHP_EOL; // 出力: 10
29
30// intval関数は、小数点以下を単純に切り捨てるため、
31// 四捨五入のような挙動はしませんので注意してください。
32// 例: 9.99 は 9 になります。
33?>

intval関数は、PHPで様々な型の値を整数(int型)に変換するために使用される関数です。主に浮動小数点数(小数点のある数値)から小数点以下を取り除き、整数値を得たい場合に活用されます。

この関数は、与えられた値($value)の小数点以下を単純に「切り捨てて」整数に変換します。具体的には、数値が正の場合も負の場合も、常にゼロの方向へ丸められます。例えば、3.141593に、-5.7-5になります。99.999のような場合でも、四捨五入ではなく99と切り捨てられますので、この挙動には注意が必要です。

変換対象となる値は$value引数で指定し、変換後の整数値が戻り値として返されます。$base引数は、文字列から整数を変換する際の基数(進数)を指定するものですが、浮動小数点数の変換においては通常デフォルトの10が使われるため、意識する必要はほとんどありません。

このようにintval関数を使用することで、小数点以下を切り捨てた正確な整数値を取得することができます。

PHPのintval関数は、浮動小数点数から小数点以下を単純に切り捨てて整数に変換します。この関数を使う上で最も重要な注意点は、四捨五入ではないということです。例えば、9.99は9となり、10にはなりません。負の数の場合も同様で、-5.7は-5に変換されます。安全かつ正確な数値処理を行うためには、常に小さい方向への丸め(floor)、大きい方向への丸め(ceil)、四捨五入(round)など、目的や状況に応じて適切な関数を選んで使用してください。これにより、期待通りの結果を得られ、不正確な動作を防げます。

PHPのintval関数で文字列を整数に変換する

1<?php
2
3/**
4 * intval() 関数を使って、様々な文字列を整数に変換する例を示します。
5 *
6 * システムエンジニアを目指す初心者の方にも分かりやすいように、
7 * 各ケースでの intval の挙動をコメントで説明しています。
8 */
9function convertStringsToIntsWithIntval(): void
10{
11    echo "--- intval() を使った文字列から整数への変換例 ---" . PHP_EOL;
12
13    // 1. 基本的な数値文字列
14    $stringValue1 = "12345";
15    echo "intval(\"$stringValue1\"): " . intval($stringValue1) . PHP_EOL;
16    // 出力: 12345 (文字列がそのまま数値に変換されます)
17
18    // 2. 負の数値文字列
19    $stringValue2 = "-6789";
20    echo "intval(\"$stringValue2\"): " . intval($stringValue2) . PHP_EOL;
21    // 出力: -6789 (負の数値も正しく変換されます)
22
23    // 3. 小数点を含む数値文字列
24    $stringValue3 = "123.45";
25    echo "intval(\"$stringValue3\"): " . intval($stringValue3) . PHP_EOL;
26    // 出力: 123 (小数点以下は切り捨てられます)
27
28    // 4. 数値で始まるが、途中に文字を含む文字列
29    $stringValue4 = "987abc";
30    echo "intval(\"$stringValue4\"): " . intval($stringValue4) . PHP_EOL;
31    // 出力: 987 (数値として認識できる最初の部分のみが変換されます)
32
33    // 5. 先頭にスペースがある数値文字列
34    $stringValue5 = "   54321";
35    echo "intval(\"$stringValue5\"): " . intval($stringValue5) . PHP_EOL;
36    // 出力: 54321 (先頭の空白は無視されます)
37
38    // 6. 数値を含まない文字列
39    $stringValue6 = "hello world";
40    echo "intval(\"$stringValue6\"): " . intval($stringValue6) . PHP_EOL;
41    // 出力: 0 (数値として認識できる部分がないため、0が返されます)
42
43    // 7. 空の文字列
44    $stringValue7 = "";
45    echo "intval(\"$stringValue7\"): " . intval($stringValue7) . PHP_EOL;
46    // 出力: 0 (空の文字列も数値として認識できないため、0が返されます)
47
48    echo PHP_EOL . "--- 基数 (base) を指定した文字列から整数への変換例 ---" . PHP_EOL;
49
50    // 8. 16進数文字列を10進数に変換
51    // "1A" (16進数) は 1*16^1 + 10*16^0 = 16 + 10 = 26 (10進数)
52    $hexString = "1A";
53    echo "intval(\"$hexString\", 16): " . intval($hexString, 16) . PHP_EOL;
54    // 出力: 26 (第二引数で基数を16と指定)
55
56    // 9. 2進数文字列を10進数に変換
57    // "1011" (2進数) は 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 8 + 0 + 2 + 1 = 11 (10進数)
58    $binString = "1011";
59    echo "intval(\"$binString\", 2): " . intval($binString, 2) . PHP_EOL;
60    // 出力: 11 (第二引数で基数を2と指定)
61
62    // 10. 8進数文字列を10進数に変換
63    // "77" (8進数) は 7*8^1 + 7*8^0 = 56 + 7 = 63 (10進数)
64    $octString = "77";
65    echo "intval(\"$octString\", 8): " . intval($octString, 8) . PHP_EOL;
66    // 出力: 63 (第二引数で基数を8と指定)
67}
68
69// 関数を実行して結果を表示します
70convertStringsToIntsWithIntval();

PHPのintval()関数は、与えられた値を整数(int型)に変換するために使用されます。第一引数$valueには変換したい値を指定し、文字列や数値など様々な型の値を渡すことができます。この関数は、指定された値から整数部分を抽出し、その結果をint型で返します。

文字列を整数に変換する場合、intval()は文字列の先頭から数字として認識できる部分を抽出し、それを整数に変換します。例えば、「123.45」からは小数点以下が切り捨てられ「123」が、「987abc」からは「987」が抽出されます。文字列に数字が全く含まれていない場合や空の文字列の場合は、「0」を返します。また、先頭の空白文字は無視されます。

第二引数$baseはオプションで、$valueが何進数で表現されているかを示す基数を指定できます。デフォルトは10(10進数)ですが、この引数に2(2進数)、8(8進数)、16(16進数)などを指定することで、異なる進数表記の文字列を10進数の整数に変換することが可能です。例えば、「1A」という16進数文字列を10進数に変換したい場合は、intval("1A", 16)のように使用します。このサンプルコードでは、様々な文字列がどのように整数に変換されるか、また基数を指定した場合の動作が具体的に示されています。

intval関数は、文字列を整数に変換する際、小数点以下を常に切り捨てます。文字列が数値で始まらない場合や、数値以外の文字が途中に含まれる場合、数値として認識できる最初の部分だけを変換し、それ以降は無視されます。また、数値を含まない文字列や空の文字列は「0」に変換されるため、意図しない値になる可能性がある点に注意が必要です。変換元の文字列が常に正しい数値形式であるとは限らないため、入力値の形式を事前に検証することを推奨します。第二引数に基数を指定することで、2進数や16進数などの文字列も10進数の整数として正しく変換できます。

関連コンテンツ

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